数据库并发操作可能出现的问题之---更新丢失
今天遇到了一个问题,就是数据库四大隔离别,以及隔离问题:我们常知道的就是脏读、不可重复读和幻读。
但是今天我学到了,一个新可能出现的问题就是:丢失更新
参考:http://www.pianshen.com/article/9331159795/
https://blog.csdn.net/huangyueranbbc/article/details/84304682
1.更新丢失(LostUpdate):
A和B事务并发执行,A事务执行更新后,提交;B事务在A事务更新后,B事务结束前也做了对该行数据的更新操作,然后回滚,则两次更新操作都丢失了。
第一类丢失更新(回滚丢失,Lost update)。
在事务A期间,事务B对数据进行了更新;在事务A撤销之后,覆盖了事务B已经提交的数据。
SQL92没有定义这种现象,标准定义的所有隔离界别都不允许第一类丢失更新发生。
第二类丢失更新(覆盖丢失/两次更新问题,Second lost update)。
在事务A期间,事务B对数据进行了更新;在事务A提交之后,覆盖了事务B已经提交的数据。
第二类丢失更新,实际上和不可重复读是同一种问题。