27.1、说明:
默认情况下, MySQL启用自动提交模式(变量autocommit为ON)。这意味着, 只要你执行DML操作的语句,
MySQL会立即隐式提交事务(Implicit Commit)。这个跟SQL Server基本是类似的,与oralce是相反的。
27.2、查看autocommit模式:
1、说明:
由于变量autocommit分会话(session)系统变量与全局(global)系统变量,所以查询的时候,最好区别是会话
系统变量还是全局系统变量。
session:当前会话有效,也就是当前连接。
global:全局,不包含当前连接,之后新获取的连接都会生效,重启mysql服务失效。
2、查看会话系统变量:
show session variables like 'autocommit';
(2)查看全局系统变量:
show global variables like 'autocommit';
(3)补充:
Value的值为ON表示autocommit开启,OFF表示autocommit关闭。
27.3、设置当前会话客户端生效:
1、设置会话系统变量:
set session autocommit=0;
2、查看会话系统变量:
show session variables like 'autocommit';
27.4、设置全局会话客户端有效,重启mysql服务失效:
1、设置全局系统变量:
set global autocommit=0;
2、重新打开一个session连接,查看全局系统变量:
show global variables like 'autocommit';
27.5、配置my.cnf文件,永久生效:
1、编辑my.cnf文件:
[mysqld]
autocommit=0
2、重启mysql服务。
27.5、补充:
还有种配置方式,如下所示,这种方式从MySQL 5.6开始已经不生效了,必须用'autocommit=0'这种方式替换。
1、my.cnf配置文件配置:
[mysqld]
init_connect="SET autocommit=0"
2、全局系统变量配置:
mysql> select version();
mysql> set global init_connect='SET autocommit=0';
/*只能使用global,因为init_connect是全局系统变量
*/
mysql> show global variables like 'init_connect';
27.6、注意:
在不同的连接(session)下,使用'commit;'是相互不影响的。