Mysql存储过程的回滚

来源:互联网 发布:商业银行模拟软件 编辑:程序博客网 时间:2024/04/28 00:10

在Mysql数据据中创建存储过程执行多条SQL语句,当遇到问题时将所有的执行都回滚,这样存储过程就实现了事物操作。

实现过程:定义一个变量t_error初始值为0,再声明一条语句,如果执行SQL的时候捕获到异常,设置t_error的值为1,在存储过程前设置 autocommit = 0; 在存储过程结束的地方判断t_error的值,0则commit,1则rollback。

创建存储过程的SQL如下:

</pre><pre name="code" class="sql">DELIMITER $$CREATE DEFINER=`root`@`localhost` PROCEDURE `proTest`()BEGINDECLARE t_error INTEGER DEFAULT 0;    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;       set autocommit=0;   START TRANSACTION;   INSERT INTO student VALUES(1, 'test1',1,3);   /* 第一条 insert 能执行 */   INSERT INTO student VALUES('a', 'test2',3,6);  /* 第二条 insert,不能执行 */    IF t_error = 0 THEN            COMMIT;        ELSE            ROLLBACK;        END IF; END

调用这个存储过程后,不会向数据库表中插入任何记录。


0 0
原创粉丝点击