一尘不染

MySQL:存储过程中的事务

mysql

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

BEGIN

    .. Declare statements ..

    START TRANSACTION;

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

    COMMIT;

END

MySQL版本: 5.1.61-0ubuntu0.11.10.1-log

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

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

阅读 237

收藏
2020-05-17

共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;
2020-05-17