Mysql防止不符合插入触发条件的插入

时间:2012-09-23 18:33:36

标签: mysql

我正在尝试设置触发器,以便在不满足条件时不会发生插入。

我认为以下是这样做的方法,但我不确定

我收到了错误消息 / * 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$$

1 个答案:

答案 0 :(得分:4)

除非先前使用DECLARE ... CONDITION;

声明,否则SQLSTATE必须是5个字符的字符串
SIGNAL SQLSTATE '45000 'SET MESSAGE_TEXT = error_msg;

您正尝试将SQLSTATE设置为'45000'(请注意空格),长度为6个字符。修复间距,您不应再看到该消息(它也会反映在您的错误消息中,但空间有点难以看到)