繁体   English   中英

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

[英]Mysql Prevent insert with insert trigger condition not met

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

我以为下面是做到这一点的方法,但我不确定

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

除非先前使用DECLARE ... CONDITION声明,否则SQLSTATE必须为5个字符串。

SIGNAL SQLSTATE '45000 'SET MESSAGE_TEXT = error_msg;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM