zoukankan      html  css  js  c++  java
  • mysql中set autocommit=0与start transaction区别

    set autocommit=0指事务非自动提交,自此句执行以后,每个SQL语句或者语句块所在的事务都需要显示"commit"才能提交事务。

    1、不管autocommit 是1还是0 
         START TRANSACTION 后,只有当commit数据才会生效,ROLLBACK后就会回滚。

    2、当autocommit 为 0 时
        不管有没有START TRANSACTION。
        只有当commit数据才会生效,ROLLBACK后就会回滚。

    3、如果autocommit 为1 ,并且没有START TRANSACTION 。
        调用ROLLBACK是没有用的。即便设置了SAVEPOINT。

    回滚成功

    set autocommit =1;
    
    DELIMITER $$
    DROP PROCEDURE IF EXISTS  mmmm $$  
    CREATE DEFINER=`tms_admin`@`%` PROCEDURE `mmmm`()
    BEGIN
    
    
          
        DECLARE t_error INTEGER DEFAULT 0;
        DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND  SET t_error=1;
        
    
    
        START TRANSACTION;
        SAVEPOINT p1;  
    
                update t_user set instance_seq_id = 'tt00006';
                update t_user set instance_seq_id000 = 'tt00007';
    
    
                IF t_error = 1 THEN 
                    ROLLBACK to p1;
                ELSE 
                    COMMIT; 
                END IF;
    
    END$$
    DELIMITER ;
    
    CALL `tms_inst_tt00003`.`mmmm`();
    set autocommit =0;
    
    DELIMITER $$
    DROP PROCEDURE IF EXISTS  mmmm $$  
    CREATE DEFINER=`tms_admin`@`%` PROCEDURE `mmmm`()
    BEGIN
    
    
          
        DECLARE t_error INTEGER DEFAULT 0;
        DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND  SET t_error=1;
        
    
    
        START TRANSACTION;
        SAVEPOINT p1;  
    
                update t_user set instance_seq_id = 'tt00006';
                update t_user set instance_seq_id000 = 'tt00007';
    
    
                IF t_error = 1 THEN 
                    ROLLBACK to p1;
                ELSE 
                    COMMIT; 
                END IF;
    
    END$$
    DELIMITER ;
    
    CALL `tms_inst_tt00003`.`mmmm`();

    回滚成功

    set autocommit =0;
    
    DELIMITER $$
    DROP PROCEDURE IF EXISTS  mmmm $$  
    CREATE DEFINER=`tms_admin`@`%` PROCEDURE `mmmm`()
    BEGIN
    
    
          
        DECLARE t_error INTEGER DEFAULT 0;
        DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND  SET t_error=1;
    
        SAVEPOINT p1;  
    
                update t_user set instance_seq_id = 'tt00006';
                update t_user set instance_seq_id000 = 'tt00007';
    
    
                IF t_error = 1 THEN 
                    ROLLBACK to p1;
                ELSE 
                    COMMIT; 
                END IF;
    
    END$$
    DELIMITER ;

    回滚成功

  • 相关阅读:
    【BZOJ2288】生日礼物 [贪心]
    Tinyhttpd阅读笔记
    数据结构-图-经典算法(三)
    数据结构-图-经典算法(二)
    数据结构-图-经典算法(一)
    TCP协议的滑动窗口协议以及流量控制
    2016腾讯实习电话面试总结---2016-03-10
    B树,B+树,B*树
    平衡二叉树(AVL树)
    二叉搜索树(二叉查找树,二叉排序树)
  • 原文地址:https://www.cnblogs.com/lhp2012/p/5315928.html
Copyright © 2011-2022 走看看