MySQL存储过程回滚的原因

时间:2013-09-24 14:11:22

标签: mysql stored-procedures error-handling rollback

如果rollback没有SQLEXCEPTION命令,MySQL存储过程将抛出错误,但它在异常之前更改了一些数据。
我为SQL异常添加了rollback命令:

DECLARE EXIT HANDLER FOR SQLEXCEPTION 
BEGIN
    ROLLBACK; 
END;

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

1 个答案:

答案 0 :(得分:0)

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

DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
  SET @flag = 1;
  IF @flag = 1 THEN RESIGNAL;END IF;
  ROLLBACK;
END;