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

笑天居士 发布于 2015/01/08 10:09
阅读 277
收藏 0
两个节点,更新同一条记录,会出现不一致

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'

这种覆盖是很危险的。
加载中
0
雷兽
看着像没开事务了?。。。
0
笑天居士
笑天居士

不是,这个是我的错误

是因为A节点上:

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

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

返回顶部
顶部