MySQL存储过程回滚的原因

标签 mysql stored-procedures error-handling rollback

如果没有SQLEXCEPTIONrollback命令,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/

相关文章:

php - PHP 中的 MySQL 无法获取相等的值

如果太长,Mysql 会转换整数

sql-server - 如何实现 MS SQL 2014 存储过程

MySQL存储过程;多语句过程,抛出错误

c# - 异常处理 ASP .NET Core MVC 6

c - 在这种情况下使用错误

php - oneToMany 或 manyToOne Doctrine2 关系

MySQL - x 个表的不同计数摘要

sql - 在 sql 中按 IS NOT NULL AND 过滤

sql-server-2005 - 报告错误时记录 SQL Server 调用堆栈