我想要一个比较两个日期时间的触发器。
这是我的触发器:
编辑:
create trigger updateRealisee after update on ladi.DSMSreservation for each row
begin
declare mnt datetime;
mnt=(select NOW());
if :new.date < mnt then
:new.realisee = 1;
end if;
end;
答案 0 :(得分:0)
错误是udpate 触发器后有几个限制:
但是,您可以将其更改为插入前触发器。
我已经测试了下面的代码并且它有效。当然,它只适用于您新插入的那些,而不是已经存在的那些。对于已经退出的那些......只需运行:
update TEST.DSMSreservation set realisee = 1 where date < NOW();
然后......以下完整代码创建表,触发器和添加行提供了一个示例,说明它如何在新添加的行上运行:
update TEST.DSMSreservation set realisee = 1 where date < NOW();
create database TEST; USE TEST; CREATE TABLE TEST.DSMSreservation ( date DATETIME NULL DEFAULT NULL, realisee INT NULL DEFAULT NULL ); delimiter $$ create trigger updateRealisee before insert on TEST.DSMSreservation for each row begin IF (new.date < NOW()) THEN SET new.realisee = 1; end if; end; $$ delimiter ; INSERT INTO DSMSreservation VALUES ('2012-06-08 12:13:14',0); INSERT INTO DSMSreservation VALUES ('2017-06-08 12:13:14',0); INSERT INTO DSMSreservation VALUES ('2016-06-08 10:13:14',0); INSERT INTO DSMSreservation (date) VALUES ('2016-06-08 16:13:14');
运行这两个mysql语句将解决您尝试使用原始触发器完成的操作。
如果这已经回答了您的问题,请标记为答案。