我想創建一個插入觸發器,它可以更新所有插入行上的值(如果它們爲空),則應根據插入中的另一列從新表中獲取新值表。SQL插入觸發器來更新INSERTED表值
我想:
UPDATE INSERTED
SET TheColumnToBeUpdated =
(
SELECT TheValueCol FROM AnotherTable.ValueCol
WHERE AnotherTable.ValudCol1 = INSERTED.ValueCol1
)
WHERE ValueCol IS NULL
但我得到這個錯誤:
Msg 286, Level 16, State 1, Procedure ThisTable_INSERT, Line 15
The logical tables INSERTED and DELETED cannot be updated.
我應該怎麼辦呢?
如果你不打算封裝在一個存儲過程來處理這個邏輯,比觸發一個更好的替代方法是以使用默認約束:http://msdn.microsoft.com/en-us/library/aa175912%28SQL.80%29.aspx – 2009-12-03 03:44:38
我希望我可以使用默認值,但正如你可以看到我想更新我的表根據插入的行中的不同列,不適用於'默認' – Shimmy 2009-12-03 03:51:17
@OMG小馬:Shimmy不能使用默認的每個問題:http://stackoverflow.com/questions/1744455 – gbn 2009-12-03 08:18:02