更正此触发器的MySQL语法?

时间:2014-07-16 22:24:12

标签: mysql

尝试创建一个简单的触发器,在表更新后,它会检查计数(InvalidLogins)是否超过4,如果是,则将字段'LockedOut'设置为1.以下是我尝试创建触发器的方法,这是我对MySQL的第一个触发器,我无法让它工作。

CREATE TRIGGER update_user_lockout after update ON members
FOR EACH ROW SET LockedOut = 1 where invalidLogins < 4

MySQL返回的错误是: 错误代码:1064。您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'.LockedOut = 1附近使用正确的语法,其中invalidLogins&lt; 4'在第2行

1 个答案:

答案 0 :(得分:2)

delimiter |
CREATE TRIGGER update_user_lockout before update ON members
FOR EACH ROW 
    IF NEW.invalidLogins < 4 THEN
        SET NEW.LockedOut = 1;
    END IF;
END
|
delimiter ;
  • 可以使用NEW
  • 引用当前记录
  • 选择另一个分隔符而不是;。否则,触发器定义将在第一个;结束,这太早了
  • 使用before触发器在更新前更改值