当多用户对数据库进行并发操作时是容易导致数据不一致的问题。一般解决方法是,尽量从业务逻辑的角度来规避这种问题, 避免使用数据库的锁表功能,容易引起一些问题,如死锁,长时间的等待锁的释放等。如有些系统,从业务逻辑上分析是无需锁表的,如客户关系管理系统,自己的用户只能自己查看修改,其它人没有权限查看修改,也就不可能出现多人同时修改同一条客户信息,所以无需考虑锁表的问题。
当会出现多人同时操作相同数据时解决方案如下:
在主数据表后面加两个字段lockedName、lockedTime,当A用户对该数据进行操作时,先去查lockedName、lockedTime两个字段是否有值,如果有则取消操作,并返回锁表人和锁表时间信息。如果没有数据则进行修改操作,对数据进行修改之前,在主数据后面lockedName、lockedTime字段内插入锁表人姓名和锁表时间,当修改完毕时,在将两个字段值清空。