【问题标题】:sql server save transactionsql server 保存事务
【发布时间】:2013-11-16 15:04:44
【问题描述】:

我有以下代码:

DECLARE @D INT = 1

PRINT @D
BEGIN TRANSACTION

SAVE TRANSACTION asd
SET @D = @D+1
ROLLBACK TRANSACTION asd


COMMIT TRANSACTION
PRINT @D

结果是:

1
2

我希望结果应该是:

1
1

怎么了?

提前致谢。

【问题讨论】:

  • SQL Server 变量赋值不受事务“保护”——只有插入、更新、删除等表操作

标签: sql-server transactions sql-server-2012


【解决方案1】:

数据库旨在维护数据,数据存储在表中。事务用于维护数据以使数据库内部的活动具有原子性。事务仅适用于与表相关的活动,如插入、更新和删除,以使其具有原子性。在您的查询中,您处理变量和事务不支持变量回滚因为数据库内部没有数据变化。 还要注意临时表和表变量。事务回滚适用于临时表,不适用于表变量。 因此,您的查询是正确的,并且引擎可以正常工作。

【讨论】:

  • 感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多