目录
隔离级别为读已提交
如果数据库的隔离级别是读已提交(Read Committed),这是很多数据库默认的隔离级别。在这种情况下:如果事务要更新一条记录,而这条记录恰好被另一个运行中但未提交事务更改(被锁定或删除),则当前事务会阻塞,等待直到另一个事务提交或回滚后,再继续处理(First Updater Win Rule)。
如果另一个事务回滚了,那么当前事务可以继续执行,更新这条记录。
如果另一个事务提交了,要分两种情形。第一种,要是这条记录被删除了,那么忽略这条记录;第二种,这条记录被更新了,需要重新判断这条记录是否满足谓词条件(where语句),满足则更新,不满足则忽略这条记录。
隔离级别为可重复读
如果数据库的隔离级别是可重复读,事务只能看到事务开始前已提交的数据。所以,对于并发的更新操作,与读已提交是类似的。如果事务更新同一条记录,当前事务会阻塞直到另一个并发写的事务结束。如果另一个事务回滚,那么当前事务继续执行,更新这条记录。如果另一个事务提交了,当前事务会回滚,这里的处理与读已提交不同。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/278714.html