Ich verwende PostgreSQL als meine Datenbank. Und ich muss einen Eintrag in der Datenbank erstellen, und wenn er bereits vorhanden ist, aktualisieren Sie einfach seine Felder, aber eines der Felder sollte nur aktualisiert werden, wenn es nicht festgelegt ist.
Ich habe Informationen aus dieser Frage verwendet: /programming/13305878/dont-update-column-if-update-value-is-null , es hängt ziemlich mit dem zusammen, was ich habe.
Ich habe versucht, diese Abfrage zu verwenden, aber wenn ich sie ausführe, tritt ein Fehler auf mit 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);
(Die realen Werte werden natürlich ersetzt).
Wenn ich ersetzen affiliate_code = COALESCE(affiliate_code, value3)
mit affiliate_code = value3
, alles funktioniert, aber nicht in der Art und Weise möchte ich es an der Arbeit.
Wie kann ich das zum Laufen bringen?
So ist meine Tabelle definiert:
CREATE TABLE accounts (
id VARCHAR NOT NULL UNIQUE,
token VARCHAR NOT NULL,
affiliate_code VARCHAR
);
= COALESCE(accounts.affiliate_code, EXCLUDED.affiliate_code)
.