【发布时间】:2020-09-23 09:18:06
【问题描述】:
我正在尝试创建 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
当我尝试运行命令时,它返回错误。 我正在使用 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
有什么提示吗?
【问题讨论】:
-
编辑过的帖子,对不起,不高于1也不低于0,我的错。发布错误@Akina
-
你在设置分隔符吗?你用的是什么ide?span>
-
SET 语句语法与使用的不同。必须是
SET errorMessage := 'Invalid Status Value.';。 不大于 1 且不小于 0 整数列是new.status IN (0, 1),非整数列是new.status BETWEEN 0 AND 1。 当我尝试运行命令时,它返回错误。 显示完整的错误消息文本。 -
MESSAGE_TEXT 本身是无效的,它的信号声明部分见dev.mysql.com/doc/refman/8.0/en/signal.html
-
@P.Salmon 我看到了文档并添加了一个 SIGNAL SQLSTATE,但错误仍然存在。
标签: mysql triggers sql-update sql-insert