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.
它不是一个"神奇的桌子".事务详细信息存储在事务日志中,直到事务被释放(提交或回滚).这里的表格不足,因为事务可能会影响任意数量的表.
更清楚的是,数据仍然驻留在表中,但标记为删除.然后,行变为未标记或删除行.我不擅长解释这个,但这是它如何运作的基本概念.