首页 > 代码库 > 数据库排它操作(2)
数据库排它操作(2)
续:
排它操作不仅仅 FOR UPDATE 就可以,它还需要一个更新标志。
举个例子:
要 更新数据表TABLE表,表中字段ID为主键。然后A进行了如下操作
SELECT ID FROM TABLE WHERE * FOR UPDATE
UPDATE TABLE SET * WHERE ID=*;A先锁了符合条件的数据,然后进行了更新操作,之后是COMMIT之类的。
问题来了:
TIME1时刻,A了解到数据库TABLE表ID=1的列不符合状况,他在TIME2时刻准备执行上面的操作进行修改; 但是B也查到了这个状况,却在TIME1.5的时刻完成了TABLE的更改;这时候A修改的就是B改过后的数据。
解决:
需要一个参照标志,假设为UPD字段。
A要修改表中ID=1的数据,需要先进行查询ID=1数据对于的UPD字段的值;
SELECT UPD FROM TABLE WHERE ID=1
假设查找的UPD值为 vals=2014/11/14 1:04;
SELECT ID FROM TABLE WHERE ID=1 AND UPD=vals FOR UPDATE
之后进行更新操作就没有问题了。
数据库排它操作(2)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。