ON CONFLICT DO UPDATE SET foo = NOT EXCLUDED.foo не работает должным образом - PullRequest
0 голосов
/ 01 мая 2019

Почему столбец "активный" не переключает свое логическое состояние, как показано на рисунке?Таблица users_strategies получила первичный ключ pkey (id_strategy, id_account)

Ответы [ 2 ]

1 голос
/ 01 мая 2019

Вы отрицаете свой конфликтующий входной аргумент, который вы установили как true, но вы ожидали, что not true приведет к true?

Просто пропустите отрицание, и вы обновите строку в точности до значения, указанного вами при вставке:

INSERT INTO users_strategies (id_strategy, id_account, active)
VALUES (1, 48, true)
ON CONFLICT (id_strategy, id_account) DO
    UPDATE SET active = excluded.active
    RETURNING active, risk
;
1 голос
/ 01 мая 2019

вы передаете true в качестве значения "исключено", not true будет иметь значение false, поэтому для столбца будет установлено значение false.

Если вы хотите переключить значение, вам нужно отрицать существующее значение:

set active = not user_strategies.active

Для будущих сообщений, пожалуйста, показывайте код в виде отформатированного текста, а не (едва читаемых) снимков экрана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...