Sto usando PostgreSQL come mio database. E ho bisogno di creare una voce nel database, e se è già esistente, basta aggiornare i suoi campi, ma uno dei campi dovrebbe essere aggiornato solo se non è impostato.
Ho usato le informazioni di questa domanda: /programming/13305878/dont-update-column-if-update-value-is-null , è abbastanza correlato a quello che ho.
Ho provato a utilizzare questa query, ma quando la eseguo, si verifica un errore con 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);
(i valori reali vengono sostituiti, ovviamente).
Se sostituisco affiliate_code = COALESCE(affiliate_code, value3)
con affiliate_code = value3
, tutto funziona, no, ma nel modo in cui voglio farlo funzionare.
Come posso farlo funzionare?
Ecco come viene definita la mia tabella:
CREATE TABLE accounts (
id VARCHAR NOT NULL UNIQUE,
token VARCHAR NOT NULL,
affiliate_code VARCHAR
);
= COALESCE(accounts.affiliate_code, EXCLUDED.affiliate_code)
.