我有以下代码:
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
出了什么问题?
提前感谢。
答案 0 :(得分:3)
数据库旨在维护数据,数据存储在表中。这些事务是为了维护数据,使活动成为数据库内的原子.Transactions只适用于与表相关的活动,如insert,update和delete,以使其成为原子。在你的查询中,你处理变量和事务不支持回滚变量因为数据库内部没有数据更改。 还要注意临时表和表变量。事务回滚在临时表上工作而不在表变量上工作。 所以你的查询是真的,引擎就可以了。