事务操作和事务自动提交
写了这么久的SQL,怎么手动操作事务竟然快忘了,是时候复习一下了。
环境
数据库:MySQL 8(注:一定要使用支持事务的引擎,例如:InnoDB,MyISAM是不支持事务的)
显式事务操作
显式操作事务,无非就是3个动作:开启事务、提交、回滚 。
开启事务有如下两个命令,其效果都是一样的
1 | start transaction |
或
1 | begin |
提交命令如下
1 | commit |
回滚命令如下
1 | rollback |
例子
1 | # 提交 |
注:这里只是简单的展示了使用方法,复杂的需要用到条件语句,从而判断是使用commit还是rollback。
事务自动提交
一般情况下数据库都是开启了事务自动提交的,因除非显式的开始一个事务,否则每个查询都被当做一个单独的事务执行。
是否自动提交,可以通过参数autocommit设置。通过如下命令查看当前的状态
1 | show variables like 'autocommit'; |
Variable_name | Value |
---|---|
autocommit | ON |
ON表示开启自动提交;OFF表示关闭自动提交,需要手动输入commit或rollback才能让事务生效。
1 | # 开启自动提交 |
注意:设置的时候1和ON、0和OFF的效果是等同的。