Estoy usando PostgreSQL como mi base de datos. Y necesito crear una entrada en la base de datos, y si ya existe, simplemente actualice sus campos, pero uno de los campos debería actualizarse solo si no está configurado.
He usado información de esta pregunta: /programming/13305878/dont-update-column-if-update-value-is-null , está bastante relacionado con lo que tengo.
Intenté usar esta consulta, pero cuando la ejecuto, aparece un error 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);
(los valores reales se sustituyen, por supuesto).
Si lo reemplazo affiliate_code = COALESCE(affiliate_code, value3)
con affiliate_code = value3
, todo funciona, pero no de la forma en que quiero que funcione.
¿Cómo puedo hacer que esto funcione?
Así es como se define mi tabla:
CREATE TABLE accounts (
id VARCHAR NOT NULL UNIQUE,
token VARCHAR NOT NULL,
affiliate_code VARCHAR
);
= COALESCE(accounts.affiliate_code, EXCLUDED.affiliate_code)
.