0

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

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

我收到一个错误 /* SQL 错误 (1407): Bad 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$$
4

1 回答 1

4

SQLSTATE 必须是 5 个字符的字符串,除非之前使用DECLARE ... CONDITION声明;

SIGNAL SQLSTATE '45000 'SET MESSAGE_TEXT = error_msg;

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

于 2012-09-23T18:38:46.597 回答