Я використовую 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)
.