更新:
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行的''附近使用正确的语法。
答案 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变量包含新添加/更新的行值。我建议你从上面关于编写触发器的链接中阅读更多内容。