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 ;
    复制代码

    回滚成功

  • 相关阅读:
    重写trim方法时摸索出的删除数组长度的思路
    常用String类方法-Java
    Lambda入门,看这一篇幅就够了
    利用Spring AOP的通知类型以及创建通知
    SpringAOP基础
    Java开发中解决Js的跨域问题
    从properties中读取配置创建对象
    SpringBoot打包为war包,并在tomcat中运行
    查看SpringBoot应用中的嵌入式tomcat的版本
    Mybatis中返回Map
  • 原文地址:https://www.cnblogs.com/kenshinobiy/p/9584110.html
Copyright © 2011-2022 走看看