不可重复读与幻读

non-repeatable read vs. phantom read

我知道

A non-repeatable read occurs, when during the course of a transaction, a row is 
retrieved twice and the values within the row differ between reads.

A phantom read occurs when, in the course of a transaction, two identical queries are executed, and the collection of rows returned by the second query is different from the first.

我猜这是因为在这两个原因中我们都在事务 A 和事务 B 中只是提交了一些更改。

所以我的问题是...是否有来自两者或 1 的另一个用例,其原因可能不是事务 B 只是在我们处于事务 A 中时提交了一些更改?所以基本上这些是同一个问题的 2 个不同结果,对吗?

不可重复读取中的差异始终是 UPDATE 语句的结果,而在幻读的情况下,它也可能是 INSERT 或 DELETE 的结果。 此外,第一种情况可以通过锁定行来防止,而不是第二种情况。