这个触发器出了什么问题?

时间:2011-09-10 17:18:49

标签: mysql triggers

我想只设置一行激活。 如果有人试图将estrutura_versao_status设置为1,则将之前的每个estrutura_versao_status设置为0,并将此新行保留为estrutura_versao_status = 1中的唯一一行。

CREATE TRIGGER tgr_classifica_ativa_revisao BEFORE INSERT ON `sys_estrutura`
FOR EACH ROW
BEGIN
    IF (NEW.estrutura_versao_status = 1) THEN
        UPDATE `sys_estrutura` SET estrutura_versao_status = 0;
    END IF;
END;

这是错误:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第5行的''附近使用正确的语法

1 个答案:

答案 0 :(得分:2)

假设您要为新插入的行设置标志,只需使用赋值给NEW变量即可。没有必要在桌面上进行更新。

CREATE TRIGGER tgr_classifica_ativa_revisao BEFORE INSERT ON sys_estrutura
FOR EACH ROW
BEGIN
    IF (NEW.estrutura_versao_status = 1) THEN
        SET NEW.estrutura_versao_status = 0;
    END IF;
END;