MySQL设置事务自动提交

MySQL 默认开启事务自动提交模式,即除非显式的开启事务(BEGIN 或 START TRANSACTION),否则每条 SOL 语句都会被当做一个单独的事务自动执行。但有些情况下,我们需要关闭事务自动提交来保证数据的一致性。下面主要介绍如何设置事务自动提交模式。



在 MySQL 中,可以通过 SHOW VARIABLES 语句查看当前事务自动提交模式,如下所示:
mysql> SHOW VARIABLES LIKE ‘autocommit’;
+—————+——-+
| Variable_name | Value |
+—————+——-+
| autocommit | ON |

在 MySQL 中,可以使用 SET autocommit 语句设置事务的自动提交模式,语法格式如下:
SET autocommit = 0|1|ON|OFF;



对取值的说明:
值为 0 和值为 OFF:关闭事务自动提交。如果关闭自动提交,用户将会一直处于某个事务中,只有提交或回滚后才会结束当前事务,重新开始一个新事务。
值为 1 和值为 ON:开启事务自动提交。如果开启自动提交,则每执行一条 SQL 语句,事务都会提交一次。



关闭自动提交后,该位置会作为一个事务起点,直到执行 COMMIT 语句和 ROLLBACK 语句后,该事务才结束。结束之后,这就是下一个事务的起点。



关闭自动提交功能后,只用当执行 COMMIT 命令后,MySQL 才将数据表中的资料提交到数据库中。如果执行 ROLLBACK 命令,数据将会被回滚。如果不提交事务,而终止 MySQL 会话,数据库将会自动执行回滚操作。



使用 BEGIN 或 START TRANSACTION 开启一个事务之后,自动提交将保持禁用状态,直到使用 COMMIT 或 ROLLBACK 结束事务。之后,自动提交模式会恢复到之前的状态,即如果 BEGIN 前 autocommit = 1,则完成本次事务后 autocommit 还是 1。如果 BEGIN 前 autocommit = 0,则完成本次事务后 autocommit 还是 0。



http://c.biancheng.net/view/7291.html



1 查看当前会话隔离级别



select @@tx_isolation;



2 查看系统当前隔离级别



select @@global.tx_isolation;



3 设置当前会话隔离级别



set session transaction isolatin level 隔离级别;



4 设置系统当前隔离级别



set global transaction isolation level 隔离级别;



https://www.csdn.net/tags/NtjakgxsNDc5MjgtYmxvZwO0O0OO0O0O.html


Category storage