SQL触发器查询出错

时间:2012-03-24 13:18:33

标签: 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$$

错误是#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第6行的''附近使用正确的语法。

1 个答案:

答案 0 :(得分:1)

根据syntax,MySql触发器中没有“WHEN”子句。此外,您在INSERT / UPFATE / UPDATE / DELETE操作之前已经错过了。

我会像你一样编写你的触发器(可能无法编译):

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;

new变量包含新添加/更新的行值。我建议你从上面关于编写触发器的链接中阅读更多内容。