在MySQL中插入后抛出异常消息

时间:2018-06-06 11:55:34

标签: mysql sql triggers insert

我需要你关于After Insert Trigger的帮助。

我想在插入后抛出异常消息但插入不会被中止。

我该怎么办?提前谢谢。

CREATE TRIGGER `after_ins` AFTER INSERT ON `my_table` FOR EACH ROW 
BEGIN
 IF CURDATE() < '2018-08-01' THEN
    signal sqlstate '45000' set message_text = 'an error message', MYSQL_ERRNO = 1905;
 END IF;
END;

编辑:

在这种情况下,我们无法继续使用45 sqlstate终止。我们可以看到消息&#34; SHOW WARNINGS&#34;声明,对吗?

2 个答案:

答案 0 :(得分:0)

来自"13.6.7.5 SIGNAL Syntax"

  

(...)SQLSTATE语句的SIGNAL值不应以'00'开头,因为此类值表示成功(...)

  以SQLSTATE开头的

(...)'01'值是警告类中的信号。 (...)

因此,请尝试选择以SQLSTATE'00'开头的'01',具体取决于您是否要发出成功消息或警告信号。

答案 1 :(得分:0)

以45开头的sqlstate是错误并终止该过程。从01开始的sqlstate是警告,并允许该过程继续。看着 the reference page for signal以及更多信息的第一个示例

CREATE TRIGGER `after_ins` AFTER INSERT ON `my_table` FOR EACH ROW 
BEGIN
    IF CURDATE() < '2018-08-01' THEN
        signal sqlstate '01000' set message_text = 'an error message', MYSQL_ERRNO = 1905;
    END IF;
END