Я тестирую некоторый условный рендеринг, чтобы увидеть, будет ли он вести себя так, как ожидалось, в небольшом масштабе, прежде чем внедрять его в таблицу большего размера.
Цель - создать запрос на обновление, который будет обновлять только те столбцы, которыепользователь ввел новые данные, и если данных нет, то с этими столбцами ничего не делается
. Вот мой случай, когда потом проверяю.Строка с нулевым значением не была обновлена 'newValue'
drop table if exists tester
create table tester (
id serial primary key
val TEXT,
)
insert into tester (val) values (null)
select * from tester
update tester
set val = case
when val = null
then 'newValue'
else val
end;
Вот простой пример того, что я хочу произвести ($ 1 - ввод пользователя)
drop table if exists tester
create table tester (
id serial primary key
val TEXT,
)
insert into tester (val) values (null)
select * from tester
update tester
set val = case
when val != $1
then $1
else val end
where id = 1
что я 'я ожидаю, что произойдет вставка для создания строки с идентификатором 1 и ячейкой val, равной нулю.
Затем в запросе на обновление, я думаю, что обновление проверит, сохранены ли данные в valв строке 1 НЕ равно входному значению, если это правда, тогда для входного значения будет установлено значение val для строки 1.
Правильны ли эта логика и синтаксис?Если нет, то что неверно?Спасибо!