在trans和rollback之间存储数据的地方......?

Pug*_*gal 1 sql-server transactions rollback

在采访中我遇到了一个问题.所以我尝试重新创建它:

薪水

id  Emp_id  Salary
1   1       50000
2   2       40000
3   3       30000
Run Code Online (Sandbox Code Playgroud)

请参阅以下示例:

begin tran
update salary set Salary = 25000 where id = 2
select * from salary -- salary = 25000
rollback
select * from salary -- salary = 40000
Run Code Online (Sandbox Code Playgroud)

我的问题是,

工资的旧价值存储在哪里?

注意:我的猜测Magic Table可以像触发器一样使用.

当我用google搜索"数据存储在trans和rollback之间的位置"时,我得到的结果是不同类型的Transaction-Rollback Tutorials.所以我需要帮助Stack溢出.

编辑1

begin tran
update salary set Salary = 25000 where id = 2
select * from salary -- salary = 25000
-- I want to see salary = 40000 at here. Where as OUTPUT clause is invalid.
rollback
select * from salary -- salary = 40000
Run Code Online (Sandbox Code Playgroud)

谢谢,

TamilPugal.

Sea*_*nge 6

它不是一个"神奇的桌子".事务详细信息存储在事务日志中,直到事务被释放(提交或回滚).这里的表格不足,因为事务可能会影响任意数量的表.

更清楚的是,数据仍然驻留在表中,但标记为删除.然后,行变为未标记或删除行.我不擅长解释这个,但这是它如何运作的基本概念.