我有以下過程來跟蹤表中的列更改。通過使用OUTPUT子句獲取只更新的列sql
ALTER PROCEDURE [UpdateAddress]
@id bigint=0,
@fullname varchar(200)='',
@address varchar(200)='',
@city varchar(200)='',
@state varchar(200)=''
AS
declare @desc varchar(500);
BEGIN
DECLARE @MyTableVar table(
fullname varchar(200) NULL,
address varchar(200) NULL ,
city varchar(200) NULL ,
state varchar(200) NULL);
BEGIN
UPDATE [Address]
SET
[email protected],
[email protected],
[email protected],
[email protected]
OUTPUT deleted.fullname,
deleted.address,
deleted.city,
deleted.state
INTO @MyTableVar
WHERE [Id][email protected]
這裏我會得到所有更新和不更新的列。所以我們需要比較兩個像deleted.fullname and inserted.fullname
。所以,如果我在表格中有20列,並且只更新了2列。沒有比較,有什麼辦法只使用輸出子句獲取更新的列?
例如:我有20列。因爲我只更新了全名和地址。所以我應該得到全名,地址改變。沒有任何比較。有沒有像updated_column()
感謝您的任何SQL內置函數...
對您的基本問題的簡單回答是否,沒有內在的方式只返回更新的數據。比較插入和刪除是確定更改內容的有效方法。 –
如果我有20列,那麼我必須檢查所有條件。好的,謝謝你的回覆... – RUPA