在mysql中事务如何算结束?

事务结束有三种情况:

1.事务提交: 当你显式地执行 commit 语句时,事务被提交,且该事务算作结束。在可                                  重复读隔离级别下,其他事务在整个过程中看不到该事务的修改,直到它被提交。

2.事务回滚: 如果你显式地执行 ROLLBACK 语句,事务被回滚,且该事务算作结束。所有的修改都会被撤销

3.连接断开: 如果连接到 MySQL 的客户端关闭或失去连接,MySQL 将自动回滚当前连接中的未提交事务,并且事务算作结束。

其实,最让我疑惑的是在老杜讲可重复读的时候,开了两个终端窗口,在2号终端里进行了一系类insert,delete等后提交执行commit,算事务结束了;可为什么1号终端还是查不到修改的数据?

可重复读不是等事务结束了就可以查到嘛?

其实,话没错,问题在于其他事务也在进行并且它们的修改还没有提交,那么在你的事务提交之前,你是看不到的。所以在1号终端里执行commit语句,在查询就可见了

当然还有可能没有提交成功,该事务还在进行;比如在某些情况下,可能存在连接问题,导致事务没有成功提交

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值