2011-08-02 25 views

回答

2

因为这出现在我搜索MySQL错误的顶部在触发器处理,我想我会分享我的解决方案为MySQL 5.5+

我的原帖:https://stackoverflow.com/a/26115231/1733365下面重复的......

因为这篇文章出现接近顶部的时候我搜索在MySQL处理错误触发器,我想我会分享一些知识。

如果出现错误,您可以强制MySQL使用SIGNAL,但是如果您没有将其指定为类SQLEXCEPTION,则不会发生任何事情,因为并非所有SQLSTATE都被认为是不好的,即使如此,如果您有嵌套的BEGIN/END块,则必须确保RESIGNAL

另外,在你的触发器中,也许还是更简单一些,声明一个退出处理函数并且声明异常。

CREATE TRIGGER `my_table_AINS` AFTER INSERT ON `my_table` FOR EACH ROW 
BEGIN 
    DECLARE EXIT HANDLER FOR SQLEXCEPTION 
     RESIGNAL; 
    DECLARE EXIT HANDLER FOR SQLWARNING 
     RESIGNAL; 
    DECLARE EXIT HANDLER FOR NOT FOUND 
     RESIGNAL; 
    -- Do the work of the trigger. 
END 

如果在您的身体中出现错误,它将被抛回到顶部并退出并显示错误。这也可以用于存储过程和什么。

这适用于任何版本5.5+。

相关问题