আমি 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)
।