关于 多个用户同时读取修改表的并发问题!!(100)

  • 主题发起人 主题发起人 malloc
  • 开始时间 开始时间
M

malloc

Unregistered / Unconfirmed
GUEST, unregistred user!
如题我有一个表,字段(No,amount,status)客户端每次都要从该表取一个记录编号使用,初始记录状态都为NEW,使用后为DONE客户端每次只读状态为NEW的记录 来使用。但当 A 客户端读了记录中一条记录(001,30,NEW)后,使用还没提交更改状态时候,其他用户也读到该记录,这时就出现问题了,后来的提交会失败。、我想问下这样的并发情况大家是如何处理??
 
没法完全避免,以前同事开发一个项目,客户主管要求自己看到的记录,如果想审核,那就在审核期间,要求别人不许更改他正在审核的数据,否则审核就没意义了,后来同事这样实现的:A处理前,先对这条记录设置一个状态(需另外一个字段),表示当前记录被A正在处理中,B就不会再对它进行处理了。A处理完成后,或者取消处理后,需要对状态位恢复原值。
 
谢谢楼上的回答。我目前是设置了一个状态来处理,但是,如果更改状态了,但是没恢复时候,客户端掉线 或者意外断电。。那怎么处理???
 
哦,我那个同事是把那个字段和操作员绑定的,也就是说这个操作员在断线后,再次对它进行编辑时,系统一看虽然已经被锁定了,但是被当前操作员锁定,那就认为。。。。。
 
操作员绑定?我的记录初始是 NEW状态,改的时候是LOCK ,改完后就是 DONE一般来说登录系统后,操作时候,读取记录,是读取NEW的,那如何读到 LOCK 状态的呢?
 
也就是说,他比你多一个字段,当前状态是Lock,另外一个字段说明了是被谁Lock,为的就是处理你刚才说的断线情况。
 
万一这个人lock了之后没有来得及done就蒸发了呢?所以还得要一个管理员,在确认这个人蒸发了之后,负责清除lock。呵呵,开玩笑的。
 
那看来么有什么好的解决方法啊
 
znxia说的是比较理想的办法了。
 
后退
顶部