事务操作和事务自动提交

写了这么久的SQL,怎么手动操作事务竟然快忘了,是时候复习一下了。

环境

数据库:MySQL 8(注:一定要使用支持事务的引擎,例如:InnoDB,MyISAM是不支持事务的)

显式事务操作

显式操作事务,无非就是3个动作:开启事务、提交、回滚 。

开启事务有如下两个命令,其效果都是一样的

1
start transaction

1
begin

提交命令如下

1
commit

回滚命令如下

1
rollback

例子

1
2
3
4
5
6
7
8
9
# 提交
start transaction;
......
commit;

# 回滚
begin;
......
rollback;

注:这里只是简单的展示了使用方法,复杂的需要用到条件语句,从而判断是使用commit还是rollback。

事务自动提交

一般情况下数据库都是开启了事务自动提交的,因除非显式的开始一个事务,否则每个查询都被当做一个单独的事务执行。

是否自动提交,可以通过参数autocommit设置。通过如下命令查看当前的状态

1
show variables like 'autocommit';
Variable_name Value
autocommit ON

ON表示开启自动提交;OFF表示关闭自动提交,需要手动输入commitrollback才能让事务生效。

1
2
3
4
5
6
7
# 开启自动提交
set autocommit=1;
set autocommit=ON;

# 关闭自动提交
set autocommit=0;
set autocommit=OFF;

注意:设置的时候1和ON、0和OFF的效果是等同的。