1

MySQL 存储过程如果没有rollbackfor 的命令会抛出错误SQLEXCEPTION,但是在异常之前它已经改变了一些数据。
我为 SQL 异常添加回滚命令:

DECLARE EXIT HANDLER FOR SQLEXCEPTION 
BEGIN
    ROLLBACK; 
END;

但我现在不知道回滚的原因。
我知道我们可以定义每个 SQL 异常及其处理程序,但它太复杂了,我只想知道为什么会发生回滚。
有没有一种简单的方法来获取 MySQL 存储过程中回滚的原因?

4

1 回答 1

0

谢谢@kordirko。我有一个 RESIGNAL 解决方案。但它只支持到 MySQL 5.5。

DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
  SET @flag = 1;
  IF @flag = 1 THEN RESIGNAL;END IF;
  ROLLBACK;
END;
于 2013-09-25T07:33:22.587 回答