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

एक सशर्त INSERT . से आईडी प्राप्त करें

यूपीएसईआरटी कार्यान्वयन समवर्ती लेखन पहुंच के खिलाफ सुरक्षित होने के लिए बेहद जटिल है। इस पोस्टग्रेस विकी पर एक नज़र डालें जो प्रारंभिक विकास के दौरान लॉग के रूप में कार्य करता था। Postgres हैकर्स ने RETURNING में "बहिष्कृत" पंक्तियों को शामिल नहीं करने का निर्णय लिया पोस्टग्रेज 9.5 में पहली रिलीज के लिए क्लॉज। वे अगली रिलीज़ के लिए कुछ तैयार कर सकते हैं।

आपकी स्थिति को स्पष्ट करने के लिए मैनुअल में यह महत्वपूर्ण कथन है:

<ब्लॉकक्वॉट>

RETURNING . का सिंटैक्स सूची SELECT . की आउटपुट सूची के समान है . केवल सफलतापूर्वक डाली गई या अपडेट की गई पंक्तियां ही लौटाई जाएंगी। उदाहरण के लिए, यदि कोई पंक्ति लॉक की गई थी लेकिन अपडेट नहीं की गई थी, क्योंकि ON CONFLICT DO UPDATE ... WHERE खंड की स्थिति संतुष्ट नहीं थी, पंक्ति वापस नहीं की जाएगी।

बोल्ड जोर मेरा।

एकल पंक्ति . के लिए डालने के लिए:

एक ही टेबल पर समवर्ती लेखन लोड के बिना

WITH ins AS (
   INSERT INTO users(name)
   VALUES ('new_usr_name')         -- input value
   ON     CONFLICT(name) DO NOTHING
   RETURNING users.id
   )
SELECT id FROM ins
UNION  ALL
SELECT id FROM users          -- 2nd SELECT never executed if INSERT successful
WHERE  name = 'new_usr_name'  -- input value a 2nd time
LIMIT  1;

टेबल पर संभावित समवर्ती राइट लोड के साथ

इसके बजाय इस पर विचार करें (एकल पंक्ति के लिए INSERT ):

  • क्या किसी ऐसे फ़ंक्शन में SELECT या INSERT है जो दौड़ की स्थिति से ग्रस्त है?

पंक्तियों का समूह सम्मिलित करने के लिए :

  • PostgreSQL में ON CONFLICT के साथ RETURNING का उपयोग कैसे करें?

  • INSERT ... ON CONFLICT से RETURNING में बहिष्कृत पंक्तियों को कैसे शामिल करें

तीनों बहुत विस्तृत विवरण के साथ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पीजी कॉपी त्रुटि:पूर्णांक के लिए अमान्य इनपुट सिंटैक्स

  2. कैसे ट्रंक () PostgreSQL में काम करता है

  3. Postgresql -bash:psql:कमांड नहीं मिला

  4. PostgreSQL v13 क्लस्टरकंट्रोल के साथ परिनियोजन और स्केलिंग 1.8.2

  5. PostgreSQL डेटाबेस कैसे बनाएं