2014-01-16 81 views
0

我知道有很多關於類似問題的線索,但沒有真正讓我前進。SQL - 更新後觸發多列。

我想通過觸發器更新數據庫2中相應表中更新的表。他們有相同的表格結構。使用MS SQL 2008

實際上有沒有問題,在這樣做了以後INSERT觸發器就像

INSERT INTO DB2..Table1 
SELECT * 
FROM inserted 
WHERE column1 = @column1 

但是這樣做了以後UPDATE風格時

UPDATE DB2..Table1 
SET column2 = @column2 --etcetera in some way 
FROM DB1..Table1 
WHERE column1 = @column1 --or something not important 

目前有超過100列以及對錶列的更改/添加(儘管DB1..Table1和DB2..Table1將始終具有相同的結構和列),因此爲每個要更新的列設置值似乎是一個非常糟糕的選擇。

我真正想寫的是:

UPDATE DB2..Table1 
SET DB2..Table1 = (SELECT * FROM inserted WHERE column1 = @column1) alternatively DB2..Table1 = DB1..Table1 
WHERE column1 = @column1 

此外,我必須爲3設定固定值了超過100列。這三列將是DB1表和DB2表之間的唯一區別。當插入一個新行時這也很好,但是讓我想知道在更新的情況下我應該怎麼做。

任何想法?

類似的問題這個:Update multiple columns in SQL但我真的希望有一個更好的方式來做到這一點,我沒有想到。

回答

0

恐怕你運氣不好。該onlt方式做一個更新是

set a.col1 = b.val1, a.col2 = b.val2.... 

有可能是一個DBMS或兩個具有不同的語法選項,但是這是標準。

+0

儘管如此 – heen