(1)丢失数据修改
当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题。每个事务都不知道其它事务的存在。最后的更新将重写由其它事务所做的更新,这将导致数据丢失。
(2)读“脏”数据(脏读)
读“脏”数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被除撤消,而此时T1把已修改过的数据又恢复原值,T2读到的数据与数据库的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。
(3)不可重复读
不可重复读(nonrepeatable read)指事务1读取数据后,事务2对数据进行了修改,导致事务1无法再次重现前一次的读取结果。分三种情况,后两种情况称为幻读:
事务1读取某数据后,事务2对其进行了修改,当事务1再次读取该数据时,得到的值和前一次不同。
事务1按一定条件读取某数据后,事务2删除了部分记录,当事务1按照相同条件再次读取数据时,发现某些数据消失了。
事务1按一定条件读取某数据后,事务2增加了部分记录,当事务1按照相同条件再次读取数据时,发现数据增加了。