更新:
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/