这个问题是从重构函数中衍生出来的,因此它们可以在 CTE 中使用。
问题很简单:在READ COMMITTED
中执行SELECT
查询与REPEATABLE READ
事务有什么不同吗?我们假设事务中没有其他查询(甚至是"SELECT"查询(。因此,事务只执行一个SELECT
查询。
通常单个
SELECT
语句不会有区别。
例外情况是,如果 SELECT
语句调用用户定义的函数,这些函数本身发出多个 SQL 语句。
在这种情况下,REPEATABLE READ
将使所有这些 SQL 语句共享数据库的单个快照,而READ COMMITTED
将导致每个 SQL 语句看到数据库的不同状态。