autocommit自动提交事务及commit、rollback用法

发布于:2024-08-26 ⋅ 阅读:(122) ⋅ 点赞:(0)

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回滚可以进行恢复。
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到