मैं अपने डेटाबेस के रूप में PostgreSQL का उपयोग कर रहा हूं। और मुझे डेटाबेस में एक प्रविष्टि बनाने की आवश्यकता है, और यदि यह पहले से मौजूद है, तो बस इसके फ़ील्ड्स को अपडेट करें, लेकिन किसी एक फ़ील्ड को केवल तभी अपडेट किया जाना चाहिए जब वह सेट न हो।
मैंने इस प्रश्न से जानकारी का उपयोग किया है: /programming/13305878/dont-update-column-if-update-value-is-null , यह मेरे पास जो है उससे काफी संबंधित है।
मैंने इस क्वेरी का उपयोग करने की कोशिश की, लेकिन जब मैं इसे चलाता हूं, तो इसके साथ त्रुटियां होती हैं Column reference 'affiliate_code' is ambiguous
:
INSERT INTO accounts (id, token, affiliate_code)
VALUES (value1, value2, value3)
ON CONFLICT (id) DO
UPDATE SET token = value2,
affiliate_code = COALESCE(affiliate_code, value3);
(वास्तविक मान प्रतिस्थापित हैं, निश्चित रूप से)।
अगर मैं की जगह affiliate_code = COALESCE(affiliate_code, value3)
के साथ affiliate_code = value3
, सब कुछ काम करता है, लेकिन नहीं रास्ते में मैं यह काम करना चाहते हैं।
मै इसे काम मे कैसे ले सकता हूँ?
यहां बताया गया है कि मेरी तालिका कैसे परिभाषित की गई है:
CREATE TABLE accounts (
id VARCHAR NOT NULL UNIQUE,
token VARCHAR NOT NULL,
affiliate_code VARCHAR
);
= COALESCE(accounts.affiliate_code, EXCLUDED.affiliate_code)
।