如果没有SQLEXCEPTION
的rollback
命令,MySQL存储过程会抛出错误,但它在异常发生前改变了一些数据。
我为 SQL 异常添加回滚命令:
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
END;
但是现在还不知道回滚的原因。
我知道我们可以定义每个 SQL 异常及其处理程序,但它太复杂了,我只想知道为什么会发生回滚。
有没有简单的方法可以获取MySQL存储过程回滚的原因?
最佳答案
谢谢@kordirko。我已经通过 RESIGNAL 获得了一个解决方案。但它只支持到 MySQL 5.5。
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SET @flag = 1;
IF @flag = 1 THEN RESIGNAL;END IF;
ROLLBACK;
END;
关于MySQL存储过程回滚的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18984005/