每一次修改都加上一个时间戳,然后第二个人修改的时候,先判断时间戳,不一致的话,就给出提示~
我也是这么想的,但是是网页。我说把时间放在隐藏的html的代码里,提交的时候把时间一起提交。我们经理希望有更好的办法。
@越天: 时间戳是数据库的一个字段...
隐藏在html代码,是不行的,因为这个时间不能标注记录是否被修改~
@幻天芒: 可是对象如果是一个从数据库中取的集合呢?
@越天: 每个集合对象一个时间戳呗。
或者你加个排他锁,这样保证数据的统一性,防止出现脏数据
有时间上的差异,比如说A修改完成后N分钟B才提交修改?在这N分钟之内又有人获取了这个数据。
请问下这个排他索如何使用?
有点像svn的工作原理。
SVN的工作原理是?
@越天: 你没有用svn吗?它是基于版本控制的。比如你和他都下了同一个文档是5.0的,他先修改提交后,svn的版本变为5.1 然后你想提交在5.0基础上修改的版本是提交不上的,如果提交上了,一定会覆盖别的人代码,你只能下最新的版本,再在最新版本上加自己的内容。
@angelshelter: 我用svn,svn那是对单个文件的判断的,是文件的一个属性.
如果对象本身没有时间这个属性呢?对象如果是个数据的集合呢?从数据库取出来没有时间
@越天: 那你看提交的时候吧,我不知道协议里有没有时间记录,如果有,就以那个为记录吧。如果没有,就在struts2的拦截器中记录一个时间点,以那个时间点为标准。
代码上可以加个读写锁.让a修改完,给b发个通知,提示内容有更新,让b刷新页面
网页怎么能不手动刷新的获取通知?
@越天: js+AJAX,你可以查查无刷新提交页面,基本实现是一样的
路过学习
加时间戳的办法很好, 还有一种方法就是 修改之前保存obj的原来所有字段的值,保存的时候同时提交原来的值和新的值, 数据库中判断, 如果原来值和数据库中的值有任何不同, 那么说明已经有其他人修改过了, 本次提交失败, 返回通知B, 询问是否取得最新值 还是用修改过的值直接覆盖。