1.当执行一个功能的时候需要执行多个更新操作,如:插入多个对象,删除多个对象等,就可能存在执行一个更新操作成功之后下一个更新操作失败,那么这个功能的执行就算是失败的,可是却向数据库添加或删除了不完全的相关数据,所以就会出现脏数据
解决方法:
1) 通过事物控制让多个执行语句一起提交commit,commit失败的话就回滚rollback,做到事物的原子性原则
2) 在数据库设置一个操作成功或失败的字段(或者本地临时文件里存放相关的控制数据),通过该字段进行控制,在执行出错后删除所有含有操作失败字段的数据
2.数据库同步访问控制:比如说一条记录有两个以上的用户同时访问,他们读取出来的是相同的数据,但写入时有先后,如果不做控制就会出现后来写入的数据把原来做了更新的数据覆盖,使原来做的更新操作丢失就是无效,因为他们都是在最原始读取出来的数据上做的修改,而不是在别人做了修改后的数据上做修改
解决方法:
1) 可以在数据库多设置一个版本字段来控制该数据的历史版本号(或者本地临时文件里存放相关的控制数据),就是没个人做了修改以后都要更新一下这个版本字段,同时更新之前也要做一下版本的比较,如果现在的版本和之前取出来的数据的版本不一样,那么就要从新读取数据再写入,这样就可以保证不会丢失修改