为什么在设置 TRANSACTION ISOLATION LEVEL SNAPSHOT 之前检查 TRANCOUNT
Why check TRANCOUNT before setting TRANSACTION ISOLATION LEVEL SNAPSHOT
为什么在使用快照隔离时,在设置事务级别之前经常看到 IF @@TRANCOUNT = 0?
即,在存储过程中:
IF @@TRANCOUNT = 0
BEGIN
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
END
其中一个原因来自 Microsoft Documentations:
无法将事务设置为从另一个隔离级别开始的 SNAPSHOT 隔离级别;这样做会导致交易中止。如果事务以 SNAPSHOT 隔离级别开始,您可以将其更改为另一个隔离级别,然后再返回到 SNAPSHOT。事务在第一次访问数据时启动。
为什么在使用快照隔离时,在设置事务级别之前经常看到 IF @@TRANCOUNT = 0?
即,在存储过程中:
IF @@TRANCOUNT = 0
BEGIN
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
END
其中一个原因来自 Microsoft Documentations:
无法将事务设置为从另一个隔离级别开始的 SNAPSHOT 隔离级别;这样做会导致交易中止。如果事务以 SNAPSHOT 隔离级别开始,您可以将其更改为另一个隔离级别,然后再返回到 SNAPSHOT。事务在第一次访问数据时启动。