我正在使用PostgreSQL作为数据库。我需要在数据库中创建一个条目,如果该条目已经存在,则只需更新其字段即可,但是只有未设置该字段时,才应更新其中一个字段。
我已经从这个问题中使用过信息:https : //stackoverflow.com/questions/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)
。