f2, f3...) values (v1,v2,v3...) on conflict (f1) do update set f2=v2, f3=v3
выполнять update только не null значениями?
Например, v2 было null, а v3 нет, в момент обновления для записи прилетело v2 не null, а v3 null?
Есть ли возможность каких либо проверок, чтобы не занулять внесенные ранее значения?
coalesce
спасибо, изучу👍
насколько я понял нужно обернуть каждое значение в coalesce? Что то не работает или я неправильно делаю, можешь добавить чуть деталей к подсказке?)
Нужно. Вместе с "дефолтным" старым значением.
set f2 = coalesce(v2, f2), f3 = coalesce(v3, f3)
ааа, сейчас попробую!)
Я бы сказал set f2=coalesce(excluded.f2, table_name.f2), ...
Вариант status = coalesce(status, 'done') возвращает ошибку error: column reference "status" is ambiguous Вариант status = coalesce((select status from items where account_id=23456), 'done') работает, но у меня около 8 - 10 таких полей и select в каждом выглядит очень нагроможденно Может я снова неверно указываю аргументы в функции?
Ну, попробуйте теперь именно так, как я посоветовал.
Сработал status = coalesce(table_name.status, 'done') Спасибо за помощь)
Я бы сказал, что скорее надо наборот. Но, в общем, тут сами решайте.
вы уверены, что используете верный status? Выглядит так, будто меняете значение на то же самое значение
Создание записи специфично, тут уже много деталей по приложению. Мне важен был сам принцип - не занулять значения ни в коем случае) Далее, уже буду разбираться в конкретных кейсах задачи
Обсуждают сегодня