Mic*_*l A 2 sql t-sql sql-server sql-server-2005 sql-server-2008
出于测试目的,我想知道是否可以组合以下两个选项:
begin transaction
select  x
from    example_table
update  example_table
set     x = 'new value'
select  x
from    example_table
rollback transaction
基本上,我想看到一个结果输出,如:
列名称,更新的列名称
如果我理解正确,你可以使用OUTPUT子句(SQL Server 2005 +)
use tempdb
go
create table #tbl (i int)
insert into #tbl values (10),(20),(30),(40)
update #tbl
set i=i+1
output deleted.i i_old,inserted.i  i_updated
drop table #tbl
来自Book OnLine
OUTPUT子句从INSERT,UPDATE,DELETE或MERGE语句影响的每一行返回信息或基于表达式的表达式.
...
DELETED是一个列前缀,用于指定更新或删除操作删除的值.前缀为DELETED的列反映UPDATE,DELETE或MERGE语句完成之前的值.
...
INSERTED是一个列前缀,指定插入或更新操作添加的值.以INSERTED为前缀的列反映UPDATE,INSERT或MERGE语句完成后但在执行触发器之前的值.
EDITED
begin transaction
update  example_table
set     x = 'new value'
output deleted.x old_value, inserted.x new_value
rollback transaction
| 归档时间: | 
 | 
| 查看次数: | 132 次 | 
| 最近记录: |