TRIGGER `dn_name`.`schedule_arrive` AFTER INSERT
ON `dn_name`.`administration_schedule`
FOR EACH ROW BEGIN
DECLARE approx_hr INT(11), update_hr DATETIME;
SELECT approx_hr FROM `administration_routes` WHERE id = NEW.route_id INTO approx_hr;
SELECT DATE_ADD(new.depart_time, INTERVAL approx_hr HOUR_MINUTE) INTO update_hr;
UPDATE administration_schedule SET arrive_time=approx_hr WHERE id = NEW.id;
END$$
在运行插入查询时,我设计为从具有相关ID的 route 表中选择大约小时,然后从新插入的出发时间将该值设置为approx_hr
,increase datetime
并分配到update_hr
,最后更新启用触发器的同一表中的arrive_time
字段。但是在执行查询时,系统显示如下;
错误代码: 1064 您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以在',update_hr datetime附近使用正确的语法; 从
administration_routes
中第7行的id ='中选择大约_hr
答案 0 :(得分:0)
关于NEW.myColumn
和OLD.myColumn
,您只能在使用“之前”的东西时使用它们。插入后,您没有OLD.myColumn
或NEW.myColumn
保留当前的内容。对于您要执行的操作,请使用“插入前”并将“选择,...选择...,更新...”更改为简单的
SET NEW.arrive_time = DATE_ADD(NEW.depart_time,INTERVAL ...);
答案 1 :(得分:0)
使用before update
触发器:
CREATE TRIGGER `dn_name`.`schedule_arrive` BEFORE INSERT
ON `dn_name`.`administration_schedule`
FOR EACH ROW
BEGIN
DECLARE approx_hr INT(11), update_hr DATETIME;
SELECT approx_hr FROM `administration_routes` WHERE id = NEW.route_id INTO approx_hr;
SELECT DATE_ADD(new.depart_time, INTERVAL approx_hr HOUR_MINUTE) INTO update_hr;
SET NEW.arrive_time = approx_hr;
END$$