使用output語法可帶回兩種資訊
- INSERTED.欄位名稱:可輸出經過INSERT 、 UPDATE、MERGE完成後,被影響的RowData
- DELETED.欄位名稱:可輸出經過UPDATE、DELETE、MERGE完成後,被影響的RowData
並搭配into語法,寫入其他的資料表中
declare @origin_data table ( --原始資料
recno int not null,
info varchar(30) null,
buildtime datetime not null,
modifytime datetime null
)
declare @clean_data table ( --被修改的且經過清理的資料
recno int not null,
info varchar(30) null,
logdate datetime not null
)
declare @delete_data table --被刪除的資料
(
recno int not null,
info varchar(30) null,
buildtime datetime not null
)
--插入原始資料
insert into @origin_data values(1 , '資料1' , '2019-04-07', null)
insert into @origin_data values(2 , '資料2' , '2019-04-08', null)
insert into @origin_data values(3 , '資料3' , '2019-04-09', null)
insert into @origin_data values(4 , '資料4' , '2019-04-10', null)
select * from @origin_data --檢閱原始資料
update @origin_data --修改資料
set
info = '資料' + convert(varchar, recno) + '被修改囉',
modifytime = getdate()
output --輸出「觸發update時,被修改的資料」
inserted.recno as recno,
inserted.info as info,
(case --取最新的編輯時間
when inserted.modifytime > inserted.buildtime
then inserted.modifytime
else
inserted.buildtime
end) as logdate
into @clean_data
where
recno in (3,4)
select * from @origin_data --檢查被修改的結果
select * from @clean_data --檢查output...into後的資料
delete @origin_data
output --輸出「觸發delete時,被刪除的資料」
deleted.recno,
deleted.info,
getdate()
into @delete_data
where modifytime is null
select * from @delete_data --檢閱被刪除的資料
select * from @origin_data --檢閱原始的資料
執行結果: