Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 更新前我的SQL触发器_Mysql_Sql_Triggers - Fatal编程技术网

Mysql 更新前我的SQL触发器

Mysql 更新前我的SQL触发器,mysql,sql,triggers,Mysql,Sql,Triggers,如果这个问题以前被问过一百万次,我道歉 因此,我试图在一个表上创建一个触发器,当一个员工被分配一个任务时,pick_date被更新以显示这一点。仅当日期字段为空时,才应更新该字段。订单号、员工和订单提货日期都在同一张表上 我有以下触发器,但似乎无法启动 CREATE TRIGGER pickDate BEFORE UPDATE ON order_master FOR EACH ROW BEGIN UPDATE order_master SET NEW.order_pick_date = IFNU

如果这个问题以前被问过一百万次,我道歉

因此,我试图在一个表上创建一个触发器,当一个员工被分配一个任务时,pick_date被更新以显示这一点。仅当日期字段为空时,才应更新该字段。订单号、员工和订单提货日期都在同一张表上

我有以下触发器,但似乎无法启动

CREATE TRIGGER pickDate BEFORE UPDATE
ON order_master
FOR EACH ROW BEGIN
UPDATE order_master SET NEW.order_pick_date = IFNULL(SYSDATE(),) WHERE  order_master.order_no = old.order_no
END;
更新前触发器可以。您只是不想进行更新。只需在新记录上设置值:


还有一些其他问题,例如getdate是SQL Server语法,但我认为这正是您的意图。

您会遇到哪些错误?对于start-you-IFNULL语法错误:没有第二个参数。在没有IFNULL的情况下尝试,得到错误1064 42000:您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解第5行“END”附近使用的正确语法,因此我尝试了以下方法:DELIMETER//CREATE TRIGGER pickDate BEFORE UPDATE ON order_master for EACH SET NEW.order_pick_date=Coalescold.order_pick_date,now;完//DELIMTER;我得到:错误106442000:您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解可使用的正确语法,接近'END//知道为什么吗?感谢Gordon的帮助,我将在将来记住这一点:
CREATE TRIGGER pickDate BEFORE UPDATE
ON order_master
FOR EACH ROW BEGIN
    SET NEW.order_pick_date = COALESCE(old.order_pick_date, now()) ;
END;