我写了一个脚本来做一个小实验:
use MyDatabase;
declare @variable int;
set @variable = 5;
begin tran test
set @variable = 6;
rollback tran test;
select @variable;
如您所见,@variable
在脚本的开头被声明
,用 5 初始化,然后在 transaction
中它设置为 6。在 transaction
回滚后,我们显示 @variable
,它的值仍然是 6,尽管它的值变化是在 transaction
从那时起回滚。我本以为选择会产生 5 的结果。这种行为的原因是什么?
最佳答案
因为事务是用来维护真实数据的,表中的数据(不是变量,不是表变量)。这就是它的全部内容。
这对于您可能想要回滚但从事务中返回一些单独的值作为回滚原因的指示(可能抛出或只是重新调整变量状态代码)的情况很有用。
关于sql-server - 为什么即使回滚事务,SQL Server 仍保持可变状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39931886/