Использовать правило обновления в строке

58
7

У меня есть таблица mysql:

'id' - int (primary key)
'datecolumn' - datetime
'name' - varchar

В моей заявке я хочу применить правило, чтобы столбец имени не мог быть обновлен, если текущая дата и время datecolumn значение поля datecolumn. В настоящее время я запрашиваю базу данных для значения для каждой строки, а затем обновляю, если текущая дата/время предшествует.

Я хотел бы знать, как обеспечить это без дополнительного вызова базы данных перед обновлением. Я обновляю много разных строк за раз в приложении, и думаю, что я вызываю проблемы с производительностью из-за всех дополнительных запросов.

спросил(а) 2015-08-19T05:30:00+03:00 5 лет, 2 месяца назад
1
Решение
58

Вы можете применять такие правила, используя триггер.

В вашем случае вам понадобится триггер before update. Что-то вроде этого:

delimiter $$

create trigger noupdates before update on t
for each row
begin
if new.datecolumn > now() then
signal sqlstate '45000'
set message_text := 'Too late to update row';
end if;
end;
$$
delimiter ;

ответил(а) 2015-08-19T05:36:00+03:00 5 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема