2

我正在为我的一张表编写触发器。我想要做的是,我想用插入的字段之一更新另一个表列。

CREATE TRIGGER [dbo].[Trigger_TestTrigger]
ON [dbo].[TableA]
FOR INSERT
AS

BEGIN
    SET NoCount ON
    DECLARE @variable UNIQUEIDENTIFIER
    SELECT @variable = TableB.colA1 FROM TableB WHERE (TableB.colB1 = INSERTED.colA1) 
    IF (@variable != INSERTED.colA2)
    BEGIN
        UPDATE TableB SET colB4 = INSERTED.colA2 WHERE TableB.colB1 =INSERTED.colA1
    END 
END

但是在向数据库创建此触发器时会出错。错误是:

 "INSERTED.colA1" could not be bound.
 "INSERTED.colA2" could not be bound.

通常 INSERTED 具有刚刚插入的值。那么,我应该如何拥有已插入表“TableA”的值。如果插入不能这样使用,这样做的正确方法是什么。

4

2 回答 2

4

您应该像对待任何其他表一样对待插入

SELECT @variable = TableB.colA1 
FROM TableB 
     inner join inserted ON TableB.colB1 = INSERTED.colA1

请注意,它inserted可能包含不止一行,因此这实际上不会始终提供您想要的结果

于 2012-08-28T11:29:34.757 回答
2

您应该将 INSERTED 作为表格处理。

于 2012-08-28T11:30:43.007 回答