MySQL : transaction within a stored procedure

标签 mysql sql stored-procedures transactions

我的存储过程的基本结构是,

BEGIN

    .. Declare statements ..

    START TRANSACTION;

        .. Query 1 ..
        .. Query 2 ..
        .. Query 3 ..

    COMMIT;

END

MySQL version: 5.1.61-0ubuntu0.11.10.1-log

目前,如果“查询 2”失败,则提交“查询 1”的结果。

  • 如果任何查询失败,我如何回滚事务?

最佳答案

看看http://dev.mysql.com/doc/refman/5.0/en/declare-handler.html

基本上,您声明将调用回滚的错误处理程序

START TRANSACTION;

DECLARE EXIT HANDLER FOR SQLEXCEPTION 
    BEGIN
        ROLLBACK;
        EXIT PROCEDURE;
    END;
COMMIT;

关于MySQL : transaction within a stored procedure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9974325/

相关文章:

php - 当我们从数据库中删除图像时,图像无法从文件夹中删除

php - 从 MySQL 中按月和年分组的时间戳列中获取记录

php - 为现有 MySQL 模式实现模糊的唯一标识符

Mysql 重启后不持久

SQL Pivot 具有不同数量的行和复合键来形成列

sql-server - 是否可以使用存储过程获取 mac 地址?

sql-server - 从 SSIS 运行时,存储过程返回架构版本更改错误,但直接运行时则不会

mysql - 如何处理 SQL Loader 中的条件空间?

sql - T-SQL 每小时获取行数,无论日期如何

php - mysql 过程中游标循环后的 select 语句在 pdo 中没有输出,但在 phpmyadmin 中有输出