Mysql触发器创建错误语法

Mysql触发器创建错误语法,mysql,triggers,sql-update,sql-insert,Mysql,Triggers,Sql Update,Sql Insert,我正在尝试创建一个SQL触发器,但我始终收到一条错误消息,如果名为status的值不高于1且不低于0,我想检查更新和插入操作 CREATE TRIGGER tr_ins_cert_login BEFORE UPDATE ON cert_login FOR EACH ROW BEGIN DECLARE errorMessage VARCHAR(255); SET errorMessage('Invalid Status Value.'); IF new.sta

我正在尝试创建一个SQL触发器,但我始终收到一条错误消息,如果名为status的值不高于1且不低于0,我想检查更新和插入操作

CREATE TRIGGER tr_ins_cert_login 
BEFORE UPDATE ON cert_login 
FOR EACH ROW
BEGIN
    DECLARE errorMessage VARCHAR(255);
    SET errorMessage('Invalid Status Value.');
    
    IF new.status <> 0 AND new.status <> 1 THEN
        SET MESSAGE_TEXT = errorMessage;
    END IF;
END   
当我尝试运行命令时,它返回错误。 我正在使用MySql

错误: 1064-您的SQL语法有错误;在第5行附近,查看与MySQL服务器版本相对应的手册,以了解要使用的正确语法


有什么提示吗?

消息文本应该是信号sqlstate的一部分,在my box上的语法后面

drop trigger if exists t;
delimiter $$

CREATE TRIGGER t 
BEFORE UPDATE ON cert_login 
FOR EACH ROW
BEGIN
    DECLARE errorMessage VARCHAR(255);
    SET errorMessage = ('Invalid Status Value.');
    
    IF new.status <> 0 AND new.status <> 1 THEN
       SIGNAL SQLSTATE '01000'
        SET MESSAGE_TEXT = errorMessage;
    END IF;
END   $$

delimiter ;


ps您的第一个set语句无效您错过了=

编辑的帖子,对不起,不高于1且不低于0,我的错。发布错误@Akina你在设置分隔符吗?您使用的ide是什么?SET语句语法与使用的不同。必须设置errorMessage:=“无效状态值”;。不高于1且不低于0这是0中的new.status,整数列为1,非整数列为介于0和1之间的new.status。当我尝试运行命令时,它返回错误。显示完整的错误消息text.message_text本身无效,其信号语句的一部分请参见@P.Salmon我查看了文档并添加了一个信号SQLSTATE,但错误仍然存在。