PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

Postgresql, मामले के आधार पर अद्यतन या सम्मिलित करें

मैं इसे भी करना चाहता था, इसे देखने के बाद और थोड़ा परीक्षण और त्रुटि के बाद मैं इस कामकाजी समाधान के साथ आया।

with का उपयोग करें बयान

with
u as (
  update my_table
    set some_value = $2
  where
    id = $1
  returning *
)
,
i as (
  insert into my_table (id, some_value)
    select $1, $2
  where 
    not exists(select * from u)
  returning *
)

select * from u
union
select * from i;

अद्यतन की गई पंक्ति को वापस करने से पहले अद्यतन का प्रयास करें, यदि अद्यतन से कोई पंक्ति नहीं लौटाई गई है, तो सम्मिलित पंक्ति को वापस करने वाली पंक्ति डालें। फिर लौटाए गए मानों के एक संघ का चयन करें अद्यतन और सम्मिलित करें, क्योंकि केवल एक ही होगा, आपको केवल एक पंक्ति वापस मिल जाएगी।

आशा है कि यह मदद करता है



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पोस्टग्रेएसक्यूएल फ़ंक्शंस का परीक्षण करना जो refcursor का उपभोग और वापसी करता है

  2. न्यूनतम बाउंडिंग सर्कल के त्रिज्या या व्यास का निर्धारण

  3. Cygnus-NGSI PostgreSQL में डेटा नहीं बचाएगा

  4. PostgreSQL में बाहरी आवेदन के लिए समतुल्य सिंटैक्स क्या है

  5. NodeJS Sequelize में क्वेरी द्वारा समूह की गणना कैसे करें