Mysql阻止插入,但不满足插入触发器条件
我正在尝试设置触发器,以便在不满足条件时不会发生插入 我认为下面的方法是这样做的,但我不确定 我犯了一个错误 /*SQL错误(1407):错误的SQL状态:“45000”*/ 有人能告诉我为什么会出现这个错误,如果mysql中不满足这个条件,那么最好的防止插入的方法是什么吗Mysql阻止插入,但不满足插入触发器条件,mysql,Mysql,我正在尝试设置触发器,以便在不满足条件时不会发生插入 我认为下面的方法是这样做的,但我不确定 我犯了一个错误 /*SQL错误(1407):错误的SQL状态:“45000”*/ 有人能告诉我为什么会出现这个错误,如果mysql中不满足这个条件,那么最好的防止插入的方法是什么吗 DELIMITER $$ SHOW WARNINGS$$ USE `warrington_central`$$ CREATE TRIGGER before_insert_image_comment_section_che
DELIMITER $$
SHOW WARNINGS$$
USE `warrington_central`$$
CREATE TRIGGER before_insert_image_comment_section_check
BEFORE INSERT ON image_comment FOR EACH ROW
BEGIN
DECLARE error_msg varchar(255);
IF New.section != (SELECT id from section where section = "image")
THEN SET error_msg = "Cannot insert a comment into this section as it is the wrong section type";
SIGNAL SQLSTATE '45000 'SET MESSAGE_TEXT = error_msg;
END IF;
END
$$
SHOW WARNINGS$$
SQLSTATE必须是5个字符的字符串,除非之前使用声明
您试图将SQLSTATE设置为6个字符长的“45000”(注意空格)。固定间距,您不应再次看到消息(它也反映在错误消息中,但空格有点难以看到)SQLSTATE要求为5个字符的字符串,除非之前声明使用
您试图将SQLSTATE设置为6个字符长的“45000”(注意空格)。固定间距,您将不会再次看到消息(它也反映在错误消息中,但空格有点难以看到)感谢SIGNAL SQLSTATE“45000”设置消息的什么\u TEXT=error\u msg;实际上是这样做的-这会阻止插入吗-只要在线阅读它,45000有什么作用mean@MatthewChambers信号是从触发器“返回”错误的方式,“45000”表示“未处理的用户定义异常”。这是错误代码。消息文本是错误消息的可选明文版本。是的,它应该阻止插入的发生。感谢什么信号SQLSTATE'45000'设置消息\u TEXT=error\u msg;实际上是这样做的-这会阻止插入吗-只要在线阅读它,45000有什么作用mean@MatthewChambers信号是从触发器“返回”错误的方式,“45000”表示“未处理的用户定义异常”。这是错误代码。消息文本是错误消息的可选明文版本。是的,它应该阻止插入发生。
SIGNAL SQLSTATE '45000 'SET MESSAGE_TEXT = error_msg;