日期:2014-05-18  浏览次数:20846 次

如何防止多人同时编辑一条记录
打开一条记录进入编辑页面,锁定这条记录,其他人只能以只读方式查看此记录

要考虑   进入编辑页面,锁定记录后,除正常完成编辑提交解锁之外的非法退出

比如突然断电关机,这条记录如何解锁?

有没有类似案例的解决方案?

------解决方案--------------------
这个我想在程序上加判断,进入编辑后做个标记,而这个标记也一个短的有效期,而编辑程序要在一分钟或者几分钟去更新这个有效期.万一编辑过程意外中断了,有效期没有被更新,一到有效期标记就失效.这就可以防止同步编辑.
------解决方案--------------------
我觉得楼主想法不对?
进入编辑后,如果你长期不能保存数据,那么意味着其他用户都不能对这笔数据进行操作,
我认为用户可以同时提交数据,先提交数据的用户有效,而后提交的用户是因为读取到脏数据而提交失败
------解决方案--------------------
在做更新操作时加锁试试,编辑完了就解锁.
------解决方案--------------------
学习 中......

和我写的用户登陆的差不多

要求同一时间内 当前帐号登陆的唯一性

我也没找到方法解决 用户在登陆中 发生异常如断电,死机等

如何解决用户 再次成功登陆的问题?
------解决方案--------------------
楼主的想法只能导致数据库的各用户之间的锁争用,最终数据库的性能会十分的低下。
你可以参考hdhai9451(☆新人类☆) 的意见,提交数据的先后判断可以用时间戳的方式实现,我在这个帖子的回复中对时间戳的使用分析了一下。
http://community.csdn.net/Expert/topic/5285/5285176.xml?temp=.3619043
SQL server的timestamp类型,可以用于标识行的时间戳

------解决方案--------------------
呵呵。。。。

很少看到 进出 编辑界面 加、解锁的~

这个只能在程序级控制了

弄个参数表表
进入模块之前,检测该参数是否已上锁、上锁时间是不是已经超出上限、上锁用户
(同一用户进入时,可以直接解锁。时间超出,锁无效。)

进去的时候,某个参数表 置上锁标志,同时写上上锁的时间、上锁用户
结束退出,就解锁~