0

使用快照隔离时,为什么在设置事务级别之前经常看到IF @@TRANCOUNT = 0?

即,在存储过程中:

IF @@TRANCOUNT = 0
BEGIN
    SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
END
4

1 回答 1

2

一个原因是来自Microsoft 文档:

不能将事务设置为以另一个隔离级别开始的 SNAPSHOT 隔离级别;这样做会导致事务中止。如果事务以 SNAPSHOT 隔离级别启动,您可以将其更改为另一个隔离级别,然后再返回到 SNAPSHOT。事务在第一次访问数据时开始。

于 2021-04-13T19:21:30.527 回答