我一直在试图捕捉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+。