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