这样的最终结果,到底算不算两个事务的 ACID 都得到了保障?

2020-08-22 23:05:01 +08:00
 Newyorkcity
事务 A 开始 select 到 id = 1 的一条数据
事务 B 开始 select 到 id = 1 的一条数据
事务 B 继续 将刚才 select 到的数据直接删掉
事务 B 提交 提交后数据库中再也没有 id=1 的数据
事务 A 继续 将刚才 select 到的记录中 name 字段由原来的 xe2v 改为 v2ex
事务 A 提交 提交后数据库中有了 id=1 的数据

请问事务 A 和事务 B 的 ACID 都得到保障了吗?还是只有事务 A 的 ACID 得到保障,事务 B 则没有?

谢谢
829 次点击
所在节点    问与答
2 条回复
visitant
2020-08-22 23:07:26 +08:00
事务 B 提交后,事务 A 提交时会报错的。
nekolr
2020-08-23 10:57:51 +08:00
就 MySQL 来说,正常情况下,事务 A 在更新的时候会读最新的值,由于值已经被删除并提交,所以更新的影响行数是 0,提交不会出现这种情况。

但就你这个情况来说,事务 B 没啥问题啊,但是事务 A 出现的结果肯定不合适。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/700586

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX