Я создаю таблицу расписаний в postgresql.Я хочу, чтобы пользователь мог обновлять любые столбцы подряд.Если пользователь изменяет только одно значение, я хочу, чтобы это значение было обновлено, а все остальные значения остались такими же, как в базе данных.Я попытался сделать прямой оператор обновления, и любые неопределенные входные данные изменили бы значение столбца на ноль.
Вот мое решение далеко
create table schedule (
id serial primary key,
instructor_id integer references users(id),
holidays boolean,
sunday_morning text,
sunday_afternoon text,
monday_morning text,
monday_afternoon text,
tuesday_morning text,
tuesday_afternoon text,
wednesday_morning text,
wednesday_afternoon text,
thursday_morning text,
thursday_afternoon text,
friday_morning text,
friday_afternoon text,
saturday_morning text,
saturday_afternoon text
);
ВСТАВКА ЗАЯВЛЕНИЯ
insert into schedule (
instructor_id,
holidays,
sunday_morning,
sunday_afternoon,
monday_morning,
monday_afternoon,
tuesday_morning,
tuesday_afternoon,
wednesday_morning,
wednesday_afternoon,
thursday_morning,
thursday_afternoon,
friday_morning,
friday_afternoon,
saturday_morning,
saturday_afternoon
) values (2, false, null, '7 - 9', null, null, '4 - 7', null, null, null, '9 - 11', null, null, null, null, null )
ОБНОВЛЕНИЕ ОБНОВЛЕНИЯ
update schedule
set
holidays = case when true <> NULL then true else holidays end ,
sunday_morning = case when 'asd' <> NULL then 'asd' else sunday_morning end,
sunday_afternoon = case when 'asd' <> NULL then 'asd' else sunday_afternoon end,
monday_morning = case when 'asd' <> NULL then 'asd' else monday_morning end,
monday_afternoon = case when 'asd' <> NULL then 'asd' else monday_afternoon end,
tuesday_morning = case WHEN 'asd' <> NULL then 'asd' else tuesday_morning end,
tuesday_afternoon = case when 'asd' <> NULL then 'asd' else tuesday_afternoon end,
wednesday_morning = case WHEN 'asd' <> NULL then 'asd' else wednesday_morning end,
wednesday_afternoon = case when 'asd' <> NULL then 'asd' else wednesday_afternoon end,
thursday_morning = case when 'asd' <> NULL then 'asd' else thursday_morning end,
thursday_afternoon = case when 'asd' <> NULL then 'asd' else thursday_afternoon end,
friday_morning = case when 'asd' <> NULL then 'asd' else friday_morning end,
friday_afternoon = case when 'asd' <> NULL then 'asd' else friday_afternoon end,
saturday_morning = case when 'asd' <> NULL then 'asd' else saturday_morning end,
saturday_afternoon = case when 'asd' <> NULL then 'asd' else saturday_afternoon end
where instructor_id = 1
select * from schedule
asd - просто фиктивные данные.Я не могу понять, почему это ломается.Я попробовал его в меньшем масштабе, и он работал отлично, однако теперь он выдает ошибку.