两个节点,更新同一条记录,会出现不一致

发布于 2021-12-01 11:07:30 字数 317 浏览 865 评论 2

两个节点,更新同一条记录,会出现不一致

A节点:

begin;

update example set node_name = 'jfy1' where node_id = 1;

在A节点commit前,B节点上:

update example set node_name = 'jfy2' where node_id = 1;

会成功,并且A节点数据也变成了'jfy2',这明显不对

然后这时A再commit,也成功了,AB两节点数据又都变成了'jfy1'

这种覆盖是很危险的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

执手闯天涯 2021-12-02 11:32:40

不是,这个是我的错误

是因为A节点上:

begin; 
update example set node_name = 'jfy1' where node_id = 1; 

这条name原值就是'jfy1',所以这一条更新是affect row 1,所以实际上是没加锁

自此以后,行同陌路 2021-12-02 07:32:22

看着像没开事务了?。。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文