我想创建一个插入触发器,它可以更新所有插入行上的值(如果它们为空),则应根据插入中的另一列从新表中获取新值表。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