我正在尝试设置触发器,以便在不满足条件时不会发生插入。
我认为以下是这样做的方法,但我不确定
我收到了错误消息 / * SQL错误(1407):错误的SQLSTATE:'45000'* /
任何人都可以告诉我为什么我会收到此错误,并且如果在mysql中未满足条件,则阻止插入的最佳方法。
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$$
答案 0 :(得分:4)
除非先前使用DECLARE ... CONDITION;
声明,否则SQLSTATE必须是5个字符的字符串SIGNAL SQLSTATE '45000 'SET MESSAGE_TEXT = error_msg;
您正尝试将SQLSTATE设置为'45000'(请注意空格),长度为6个字符。修复间距,您不应再看到该消息(它也会反映在您的错误消息中,但空间有点难以看到)