2011-08-02 23 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+。

相關問題