更新:

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行的''附近使用。

最佳答案

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

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

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;


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

关于mysql - SQL触发器查询中的错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9852063/

10-16 17:33