MySQl在插入和更新同一个表时触发错误(错误代码:1064)

MySQl在插入和更新同一个表时触发错误(错误代码:1064),mysql,sql,database,mysql-error-1064,database-trigger,Mysql,Sql,Database,Mysql Error 1064,Database Trigger,在运行insert查询时,我设计从带有相关id的route表中选择约小时,并将该值设置为约小时,从新插入的出发时间开始增加日期时间,并分配给更新时间,最后更新启用触发器的同一表中的到达时间字段。但在执行我的查询时,系统显示如下: 错误代码:1064 您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用near',update_hr datetime的正确语法; 从第7行的administration\u routeswhere id='中选择大约\u hr 关于NEW.myC

在运行insert查询时,我设计从带有相关id的route表中选择约小时,并将该值设置为
约小时
从新插入的出发时间开始增加日期时间
,并分配给
更新时间
,最后更新启用触发器的同一表中的
到达时间
字段。但在执行我的查询时,系统显示如下:

错误代码:1064 您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用near',update_hr datetime的正确语法; 从第7行的
administration\u routes
where id='中选择大约\u hr


关于
NEW.myColumn
OLD.myColumn
,您只能在使用“BEFORE”时使用它们。插入后,您没有
OLD.myColumn
NEW.myColumn
作为当前的。对于要执行的操作,请使用“插入前”并将“选择…,选择…,更新…”更改为简单的

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$$

更新前使用
触发器:

SET NEW.arrive_time = DATE_ADD(NEW.depart_time,INTERVAL ...);

不允许对触发触发器的表执行操作。
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$$