我需要你关于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;声明,对吗?
答案 0 :(得分:0)
(...)
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