小编Ann*_*nna的帖子

MySQL嵌套事务 - 不回滚

可能重复:
MySQL中是否允许嵌套事务?

我有使用事务的存储过程,并且在事务内部调用另一个也使用事务并更新表的过程.第二个过程在循环内调用,每个调用更新一行.第二个过程还会创建一个临时表.引擎是用于永久表的InnoDB和用于临时表的MyISAM.MySQL版本是5.5.16.

我想要的是在发生错误时回滚第二个过程所做的所有更新.

这可能吗 ?我知道一个DDL语句并启动事务; 会发出提交但是有办法吗?

代码看起来像这样:(回滚显然不起作用)

delimiter $$
drop procedure if exists `proc1`$$
create procedure `proc1`( 
  ...#some variables
) 
modifies sql data

begin
    declare error int default 0;
    declare continue handler for sqlexception
    begin 
        set error=1;
    end;


     drop temporary table if exists table1;
     create temporary table table1 (

         id int unsigned, 
         col1 decimal(12,6) default 0, 
         col2 decimal (12,6) default 0, 
         col3 decimal (12,6),

         primary key (id)) engine=MyISAM;

     START TRANSACTION;
        begin
           declare id_1 int unsigned;
           declare v1 decimal(12,6) default …
Run Code Online (Sandbox Code Playgroud)

mysql transactions rollback

3
推荐指数
1
解决办法
4362
查看次数

标签 统计

mysql ×1

rollback ×1

transactions ×1