【发布时间】:2009-12-03 03:36:40
【问题描述】:
我想创建一个插入触发器,如果它们为空,则更新所有插入行的值,新值应根据插入表中的另一列从不同的表中获取。
我试过了:
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.
我该怎么做?
【问题讨论】:
-
如果您不打算在存储过程中封装处理此问题的逻辑,比触发器更好的选择是使用默认约束:msdn.microsoft.com/en-us/library/aa175912%28SQL.80%29.aspx
-
@OMG Ponies:Shimmy 不能根据问题使用默认值:stackoverflow.com/questions/1744455
标签: sql-server-2005 insert triggers