Mysql触发器创建错误语法
我正在尝试创建一个SQL触发器,但我始终收到一条错误消息,如果名为status的值不高于1且不低于0,我想检查更新和插入操作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
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,但错误仍然存在。