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 'example@sqldat.com'
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 'example@sqldat.com';
ध्यान रखें कि दौड़ की स्थिति . के लिए अभी भी बहुत कम मौका है भारी समवर्ती भार के तहत। इस संबंधित प्रश्न के अंतर्गत विवरण:
एक लेन-देन के साथ अप्सर्ट करें