在系统中可能会出现这样的状况:
1 对同一条数据,两人同时进行操作,其人第一个人想做修改的操作,第二个人想做删除的操作。第二个人做删除的操作比第一个人要快,这时第一个人修改完成,进行提交时,并不会提示出错,只会提示0条记录被修改。
2 对同一条数据,两人同时进行修改操作,第一个人先进去修改,然后,第二人个又进去修改,第一个人改完后提交,第二人也修改完提交,其中第一个人比第二个人速度快,这样就造成,二个人修改前读取的数据是一样的,而第二人个修改的数据,覆盖了第一个人修改的内容,造成第一人的工作白做了。
这样就造成了数据操作的问题,基于以上问题,我想到以下的方案来解决。
方案一 乐观锁机制
在表中增加一个字段,版本号或时间戳,当第一个人准备修改数据前,先查出这条数据的版本号或时间戳,前执行修改时,再去库中查出版本号或时间戳是否与之前一至。如果不一至,提示用户数据已被改变;如果一至可进行修改,修改时,更新库中的版本号(增加版本号)或时间戳(最后修改时间)。
方案二 申请操作机制
多人操作数据时,可以建立一个申请机制,当有人想对某条记录操作时,需求先申请该条记录的操作权,申请成功,可以进行修改或删除的操作,操作成功,则自动释放该条数据。如果不想操作该条数据,则可以手动释放,让别人去做。