更新:
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”子句。此外,您还错过了 AFTER/BEFORE INSERT/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;
新变量包含行新添加/更新的值。我建议您从上面的链接中阅读有关编写触发器的更多内容。
关于mysql - SQL触发器查询错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9852063/