Veritabanı olarak PostgreSQL kullanıyorum. Ve veritabanında bir giriş oluşturmak gerekir ve zaten varsa, sadece alanlarını güncelleyin, ancak alanlardan biri yalnızca ayarlanmadıysa güncelleştirilmelidir.
Bu sorudan bilgi kullandım: /programming/13305878/dont-update-column-if-update-value-is-null , sahip olduğum şeyle oldukça ilgili.
Bu sorguyu kullanmaya çalıştım, ancak çalıştırdığımda hata veriyor 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);
(gerçek değerler elbette ikame edilir).
Ben değiştirirseniz affiliate_code = COALESCE(affiliate_code, value3)
ile affiliate_code = value3
herşey eserler, bir şekilde ben işe istemem ama.
Bu işi nasıl yapabilirim?
Masamın nasıl tanımlandığı aşağıda açıklanmıştır:
CREATE TABLE accounts (
id VARCHAR NOT NULL UNIQUE,
token VARCHAR NOT NULL,
affiliate_code VARCHAR
);
= COALESCE(accounts.affiliate_code, EXCLUDED.affiliate_code)
.