zoukankan      html  css  js  c++  java
  • MySQL事务的开启与提交,autocommit自动提交功能

    对于一个MySQL数据库(InnoDB),事务的开启与提交模式无非下面这两种情况:

    1、若参数autocommit=0,事务则在用户本次对数据进行操作时自动开启,在用户执行commit命令时提交,用户本次对数据库开始进行操作到用户执行commit命令之间的一系列操作为一个完整的事务周期。
    若不执行commit命令,系统则默认事务回滚。总而言之,当前情况下事务的状态是需要手动去提交。

    2、若参数autocommit=1(系统默认值),事务的开启与提交又分为两种状态:

    2.1、手动提交:autocommit=0
    当用户执行start transaction命令时(事务初始化),一个事务开启,当用户执行commit命令时当前事务提交。
    从用户执行start transaction命令到用户执行commit命令之间的一系列操作为一个完整的事务周期。
    若不执行commit命令,系统则默认事务回滚。

    2.2、自动提交:autocommit=1
    如果用户在当前情况下(参数autocommit=1)未执行start transaction命令而对数据库进行了操作,系统则默认用户对数据库的每一个操作为一个孤立的事务,
    也就是说用户每进行一次操作系都会即时提交或者即时回滚。这种情况下用户的每一个操作都是一个完整的事务周期。

    =================================

    设置autocommit开启和关闭的方法:
    用户可以将自动提交功能强制置为OFF。这样用户执行SQL语句后将不会被提交了,而执行COMMIT命令才提交,执行ROLLBACK命令回滚。

    查看当前自动提交功能状况:
    show variables like 'autocommit';  
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | autocommit    | ON    |
    +---------------+-------+
    1 row in set (0.06 sec)

    临时生效设置方法:
    下面是将自动提交功能置为ON以及置为OFF的具体语法。
    将自动提交功能置为ON
    SET AUTOCOMMIT=1;

    将自动提交功能置为OFF
    SET AUTOCOMMIT=0;

    永久生效设置方法:
    通过修改配置文件my.cnf文件,通过vim编辑my.cnf文件,在[mysqld](服务器选项下)添加:
    autocommit=0

  • 相关阅读:
    秘密挤奶机(最大流,二分)
    伊基的故事 I
    多源汇最大流(最大流)
    无向树是二分图
    上下界可行流
    圆桌问题(最大流,二分图,网络流24题)
    双栈排序
    观光奶牛
    拜访奶牛
    愤怒的牛&数列分段II
  • 原文地址:https://www.cnblogs.com/deverz/p/6547866.html
Copyright © 2011-2022 走看看