insert后抛出异常消息

n9vozmp4  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(412)

我需要你的帮助。
我想在插入后抛出异常消息,但插入不会中止。
我该怎么做?提前谢谢。

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终止,我们就不能继续。我们可以看到带有“显示警告”语句的消息,对吗?

ds97pgxw

ds97pgxw1#

根据“13.6.7.5信号语法”:
(…)the SQLSTATE a的值 SIGNAL 语句不应以开头 '00' 因为这样的值表示成功(…)

(...) SQLSTATE 以开头的值 '01' 是警告级别的信号。(…)
所以试着选择一个 SQLSTATE 开始于 '00' 或者 '01' 这取决于您是想发出成功消息还是警告。

x8diyxa7

x8diyxa72#

sqlstate以45开头是错误并终止过程。sqlstate以01开头是警告,允许过程继续。有关信号,请参阅参考页,有关更多信息,请参阅第一个示例

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

相关问题