Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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,更新: DELIMITER $$ CREATE TRIGGER updateWage BEFORE UPDATE ON st_penalty FOR EACH ROW BEGIN IF DAY({fw NOW( ) } ) = 1 THEN UPDATE st_penalty SET st_penalty.wage = (SELECT wage FROM staff WHERE staff.memId = st_penalty.memId); END IF; END$$ 错误

更新:

DELIMITER $$
CREATE TRIGGER updateWage BEFORE UPDATE ON st_penalty
FOR EACH ROW BEGIN
  IF DAY({fw NOW( ) } ) = 1 THEN
     UPDATE st_penalty SET st_penalty.wage = (SELECT wage FROM staff WHERE staff.memId = st_penalty.memId);
  END IF;
END$$
错误是#1064-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第6行“”附近使用的正确语法。

根据,MySQL触发器中没有“WHEN”子句。此外,您还错过了插入/更新/删除操作之后/之前的操作

我会这样编写触发器(可能无法编译):


新变量包含行的新添加/更新值。我建议您阅读以上链接中有关编写触发器的更多内容。

尝试使用day(NOW())=1而不是fwNOW()没有区别。错误出现在“#1064-您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,了解在每行的st#U惩罚开始更新第2行的st#U惩罚时使用的正确语法”我看不出触发器为什么会给出#1064 error?在END IF之后加上分号:END IF;结束
CREATE TRIGGER updateWage AFTER UPDATE OR INSERT ON st_penalty
FOR EACH ROW
BEGIN
    IF (DAY(NOW()) = 1)
       UPDATE st_penalty SET st_penalty.wage = (SELECT wage FROM staff WHERE staff.memId = st_penalty.memId) WHERE st_penalty.ID = new.ID
END;