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$$在运行insert查询时,我设计从具有相关id的路由表中选择约小时,并将该值设置为approx_hr,将increase datetime从新插入的离开时间中分配给update_hr,最后在启用触发器的同一表中更新arrive_time字段。但是在执行我的查询时,系统显示如下;
错误代码: 1064您的MySQL语法出现了错误;检查与MySQL服务器版本对应的手册,以获得正确的语法以使用update_hr datetime;在第7行的
administration_routes中选择approx_hr,其中id =‘
发布于 2018-06-22 11:03:44
关于NEW.myColumn和OLD.myColumn,您只能在使用“先于”的东西时使用它们。插入后,您没有当前的OLD.myColumn或NEW.myColumn肠道。要做的事情,使用“前插入”,并更改您的“选择,.选择.更新.”到一个简单的
SET NEW.arrive_time = DATE_ADD(NEW.depart_time,INTERVAL ...);发布于 2018-06-22 11:06:08
使用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$$https://stackoverflow.com/questions/50982923
复制相似问题