sql server保存事务

时间:2013-11-16 15:04:44

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

我有以下代码:

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

出了什么问题?

提前感谢。

1 个答案:

答案 0 :(得分:3)

数据库旨在维护数据,数据存储在表中。这些事务是为了维护数据,使活动成为数据库内的原子.Transactions只适用于与表相关的活动,如insert,update和delete,以使其成为原子。在你的查询中,你处理变量和事务不支持回滚变量因为数据库内部没有数据更改。 还要注意临时表和表变量。事务回滚在临时表上工作而不在表变量上工作。 所以你的查询是真的,引擎就可以了。