Mysql 触发器创建语法错误
Mysql trigger creation bad syntax
我正在尝试创建一个 SQL 触发器,但我总是收到一条错误消息,我想检查 update 和 insert 如果调用的值 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
当我尝试 运行 命令时 returns 出错。
我正在使用 MySql.
错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5
有什么提示吗?
Message_text 应该是信号 sqlstate 的一部分,遵循我盒子上的语法
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 ;
和https://www.db-fiddle.com/f/913nweKrHqXL5SViuuqAZE/0
ps 您的第一个 set 语句无效您错过了 =
我正在尝试创建一个 SQL 触发器,但我总是收到一条错误消息,我想检查 update 和 insert 如果调用的值 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
当我尝试 运行 命令时 returns 出错。 我正在使用 MySql.
错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5
有什么提示吗?
Message_text 应该是信号 sqlstate 的一部分,遵循我盒子上的语法
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 ;
和https://www.db-fiddle.com/f/913nweKrHqXL5SViuuqAZE/0
ps 您的第一个 set 语句无效您错过了 =