我一直在試圖捕捉mysql異常,特別是觸發器和存儲過程。我們如何從mysql端捕獲異常?我仍然沒有找到任何解決方案。你的幫助將不勝感激。如何在觸發器中捕獲任何異常併爲mysql存儲過程?
感謝 亞太區首席技術官Matt
我一直在試圖捕捉mysql異常,特別是觸發器和存儲過程。我們如何從mysql端捕獲異常?我仍然沒有找到任何解決方案。你的幫助將不勝感激。如何在觸發器中捕獲任何異常併爲mysql存儲過程?
感謝 亞太區首席技術官Matt
退房的語法DECLARE HANDLER
http://dev.mysql.com/doc/refman/5.1/en/declare-handler.html
另外,如果你想調試SP,這可能對你會有所幫助:
因爲這出現在我搜索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+。