关于对MySQL的“START TRANSACTION,COMMIT and ROLLBACK Statements“的常见误解

MySQL的默认模式是autocommit开启,这意味着每个非事务语句都是原子性的。START TRANSACTION会隐式禁用autocommit,直到COMMIT或ROLLBACK。在事务中人为设置autocommit为false是多余的。建议直接使用START TRANSACTION开始事务,避免多此一举。
摘要由CSDN通过智能技术生成

START TRANSACTION
[transaction_characteristic [, transaction_characteristic] …]
transaction_characteristic: {
WITH CONSISTENT SNAPSHOT
| READ WRITE
| READ ONLY
}

BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET autocommit = {0 | 1}

这些语句提供事务使用的控制。

  • START TRANSACTION 或 BEGIN开启一个新的事务.
  • COMMIT提交当前事务, 使事务持久化.
  • ROLLBACK回滚当前事务, 取消修改.
  • 设置autocommit不可用或对当前会话使用默认提交模式.

这些语句大家肯定都用过,比如很多人在开启事务之前就会先把autocommit给设置成false,然后START TRANSACTION或BEGIN开启事务。看到这操作我眼睛都掉下来了。这是什么鬼。你们是不是都没看官网文档还是不自己动手实验下。没觉得这样的操作有些多此一举吗?

登录MySQL会话默认给你的自动提交就是设置为开启的,这就意味着只要不是包含在事务内的语句都是原子的,就相当于被BEGIN和COMMIT包围一样,也就是说AUTOCOMMIT只针对单条语句才生效的。如果开启事务START TRANSACTION,autocommit会被隐式置为disable。

BEGIN…[COMMIT|ROLLBACK]是一回事,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值