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

PostgreSQL अपरर्ट क्वेरी के साथ समस्या

UPDATE पहले सीटीई में updated कोई पंक्ति नहीं produces उत्पन्न करता है . इसका मतलब है कि, आपको NULL नहीं मिलता है updated.id . के लिए मान या। updated में शामिल होने पर , आपको कुछ नहीं मिलता है , इसलिए नहीं INSERT या तो होता है।

NOT EXISTS . के साथ काम करना चाहिए :

WITH updated AS (
   UPDATE vote_user_table v
   SET    positive = TRUE       -- use booleann values ..
         ,negative = FALSE      -- .. instead of quoted string literals
   FROM   usuario u
   WHERE  v.review_id = 6       -- guessing origin
   AND    v.user_id = u.id
   AND    u.username ILIKE '[email protected]'
   RETURNING v.id
   )
INSERT INTO vote_user_table (review_id, user_id, positive, negative)
SELECT 6, u.id, TRUE, FALSE
FROM   usuario u
WHERE NOT EXISTS (SELECT 1 FROM updated)
AND    u.username ILIKE '[email protected]';

ध्यान रखें कि दौड़ की स्थिति . के लिए अभी भी बहुत कम मौका है भारी समवर्ती भार के तहत। इस संबंधित प्रश्न के अंतर्गत विवरण:
एक लेन-देन के साथ अप्सर्ट करें




  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. अन्य तालिकाओं में रहने वाले कुछ स्तंभ मानों के साथ विदेशी कुंजी बाधा

  3. जब लेन-देन पूलिंग सक्षम होती है और एक ही स्टेटमेंट जारी किया जाता है, तो pgbouncer कैसे व्यवहार करता है?

  4. एक चुनिंदा क्वेरी को कैसे सरल बनाएं जिसमें कई आंतरिक-चयन शामिल हों और PostgreSQL में प्रदर्शन बढ़ाएं

  5. नोड-पोस्टग्रेज UTF पासवर्ड बग