sql-server - 为什么即使回滚事务,SQL Server 仍保持可变状态?

我写了一个脚本来做一个小实验:

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 的结果。这种行为的原因是什么?

最佳答案

因为事务是用来维护真实数据的,表中的数据(不是变量,不是表变量)。这就是它的全部内容。

这对于您可能想要回滚但从事务中返回一些单独的值作为回滚原因的指示(可能抛出或只是重新调整变量状态代码)的情况很有用。

https://stackoverflow.com/questions/39931886/

相关文章:

angular - typescript 错误 TS1005 : '=' expected

android-instrumentation - AndroidJUnitRunner + Act

erlang - 有什么方法可以浏览 erlang 术语存储 (ETS)

c - FreeRTOS 中的抢占

python - 检查 Python 中两个字符串中的常用字母是否位于同一位置?

Groovy - 无法在注释中使用静态最终字符串

python - Flask 应用程序搜索栏

sql-server - TSQL 触发器而不是插入

curl - 如何使用 curl 访问 IBM speech-to-text api?

amazon-s3 - Haproxy - 将请求转发到 S3 托管站点