2013-09-30 50 views
0

我在插入觸發器後根據連接更新了兩個不同的列。基本上它將一個Id變成一個值。這可以正常工作,除非其中一個ID不匹配(即,默認值爲零),則兩者都不會更新。如果連接失敗,則應該只插入null。如何使用不同的查詢同時更新兩列

CREATE TRIGGER [AfterHistoryInsert] 
ON [Jet].[HistoryEntity] 
FOR INSERT 
AS 
BEGIN 
    Update t1 Set t1.OldValue = t2.Value, t1.NewValue = t3.Value 
     From Jet.HistoryEntity t1 
     join Jet.LookupListItemEntity t2 on Cast(t1.OldValue as int) = t2.Id 
     join Jet.LookupListItemEntity t3 on Cast(t1.NewValue as int) = t3.Id 
     inner join inserted i on i.Id = t1.Id 
     where t1.FieldName like '%Id' 
END 

格雷格

+0

你試過左外連接嗎? – bksi

+0

我現在有。是的,這是有效的,謝謝。 –

回答

1

嘗試左外連接,而不是加入

0

如果要更新到一個更大的桌子,建議之一是: - 選擇所有要更新的列(在你的情況下值)到臨時表 - 通過使用左外連接到臨時表來更新語句。