Я использую PostgreSQL в качестве базы данных. И мне нужно создать запись в базе данных, и если она уже существует, просто обновить ее поля, но одно из полей должно быть обновлено, только если оно не установлено.
Я использовал информацию из этого вопроса: /programming/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)
.