MySQL默认开启事务自动提交,每条SQL语句都会被当做一个单独的事务自动执行。
一、查看autocommit自动提交事物状态
SHOW VARIABLES LIKE 'autocommit';
1、开启状态:ON
autocommit的值为ON,表示系统开启自动提交模式
2、关闭状态:OFF
autocommit的值为OFF,表示系统关闭自动提交模式
二、修改autocommit状态
1、临时修改autocommit状态
#开启自动提交模式:autocommit=ON 或者 autocommit=1
SET autocommit = ON;
SET autocommit = 1;
#关闭自动提交模式:autocommit=OFF 或者 autocommit=0
SET autocommit = OFF;
SET autocommit = 0;
以上修改autocommit 状态的操作在本次ssh连接会话中有效,新开启的会话中将失效
实操:
(1)在ssh连接会话01中设置autocommit状态为OFF
(2)查看ssh连接会话1的autocommit状态为设置后的OFF关闭自动提交模式
(3)查看ssh连接会话2的autocommit状态为默认的ON开启自动提交状态
2、长久修改autocommit状态
(1)修改my.cnf配置文件:添加autocommit=0或者autocommit=OFF
或者
(2)重启mysql服务
service mysqld restart
(3)查看autocommit状态,即可永久关闭自动提交
SHOW VARIABLES LIKE 'autocommit';
三、commit提交
1、开启自动提交事务:autocommit=ON
2、关闭自动提交事务:autocommit=OFF
注意:
information_schema.INNODB_TRX 表可以用来查看当前正在运行的事务的信息:
SELECT trx_id,trx_state,trx_started,trx_mysql_thread_id,trx_query FROM information_schema.INNODB_TRX;
- trx_id: 事务的 ID。
- trx_state: 事务的状态,如 RUNNING、LOCK WAIT、ROLLING BACK、COMMITTING 等。
- trx_started: 事务开始的时间。
- trx_mysql_thread_id: 与该事务关联的 MySQL 线程 ID。
- trx_query: 触发事务的 SQL 语句(如果可用且没有超过最大长度限制)
四、rollback回滚
1、开启自动提交事务:autocommit=ON
自动提交事务开启,mysql数据库操作后使用rollback回滚无法恢复操作前的数据。
2、关闭自动提交事务:autocommit=OFF
自动提交事务被关闭,mysql数据库操作后使用rollback回滚可以进行恢复。