Mysql SQL触发器查询中出错
更新:Mysql SQL触发器查询中出错,mysql,sql,triggers,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$$ 错误
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行“”附近使用的正确语法。根据,MySQL触发器中没有“WHEN”子句。此外,您还错过了插入/更新/删除操作之后/之前的操作
我会这样编写触发器(可能无法编译):
新变量包含行的新添加/更新值。我建议您阅读以上链接中有关编写触发器的更多内容。尝试使用day(NOW())=1而不是fwNOW()没有区别。错误出现在“#1064-您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,了解在每行的st#U惩罚开始更新第2行的st#U惩罚时使用的正确语法”我看不出触发器为什么会给出#1064 error?在END IF之后加上分号:END IF;结束
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;