如果我理解正確的話,你可以使用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
從聯機OnLine
輸出子句返回的信息,或基於表達式,每個 行受INSERT,UPDATE,DELETE或MERGE語句。
...
DELETED是一個列前綴,指定由 更新刪除的價值或刪除操作。在UPDATE,DELETE或MERGE語句完成之前,以DELETED作爲前綴的列反映 的值。
...
INSERTED是一個列前綴,指定由 插入或更新操作增加的價值。在執行UPDATE,INSERT或MERGE語句之前,以INSERTED作爲前綴的列反映 值,但執行觸發器之前爲 。
EDITED
begin transaction
update example_table
set x = 'new value'
output deleted.x old_value, inserted.x new_value
rollback transaction
我不確定如果我解釋自己正確。實際上,我正在更新一個預先存在的表格,並希望顯示原始值的輸出以及我已將其更改爲的新值。 – Codingo 2012-01-09 04:00:24
@Michael這就是我的例子演示。我創建,填充數據和刪除表只是爲了舉一個例子。其實你只需要'更新...' – 2012-01-09 04:05:25
我很抱歉,但我有點困惑 - 你可以再次使用原始帖子中的例子嗎? – Codingo 2012-01-09 04:40:02