新手问题 如何锁定页面中的数据,不能被其他用户修改?

topswim · 2013年02月21日 · 最后由 zlx_star 回复于 2013年02月22日 · 4330 次阅读

有两个用户可都以更新数据库中的同一条纪录,如果两个人同时打开编辑页面,此时只有一个人录入的数据可以被更新。其他更新将被忽略但另个一个用户并不知道。如何通知一个用户,此记录已经被其他用户正在更新中? 我一开始做法是在数据库中增加一个字段,记录有用户使用它,当用户提交后在更改这个字段告诉其他用户,他已经完成更改。但这个有很大的不便,如果用户没有正确操作,此记录状态一直是被用户占用。所以其他用户也不能更新。

我想用 js 但 js 不熟悉。

数据库行级锁都没用,

不知道再弄一个履历表来记录数据能不能实现你这需求

1)本表、履历表同时记录相同内容 2)A 用户更新本表的时候同时更新履历表 3)B 用户更新本表的时候发现该记录跟履历表的内容不一样,提示该记录已被人更新过了

乐观锁如果版本不一致,抛出一个异常,后台处理一下异常,比较两个版本的差异来决定是否更新修改后的内容

同意@Ddl1st 用乐观锁

乐观锁?没听过。我学习下!

同意 #4 楼 @Ddl1st 每次有人更新时记录一个版本号,更新保存时判断这个版本号是不是发生变化,发生变化则抛出异常。

已经解决,我用 rails 时间戳校验,时间发生变化推出! 但是有个问题 rails 在数据库中记录的时间和我的时间不是一个时区,这个时区在那里改啊? #7 楼 @zlx_star #5 楼 @kenshin54 #3 楼 @ywjno

需要 登录 后方可回复, 如果你还没有账号请 注册新账号