如何引用特殊的SQL Server触发器表:错误:“更新”:无效的对象名称“已更新”。

问题描述 投票:0回答:1

当我从触发器中的“更新”表中选择时,我收到错误消息:

Msg 208, Level 16, State 1, Procedure foobar, Line 81
Invalid object name 'updated'.

我正在设置一个触发器,在父级更新时将子级更新为与父级相同的值。我尝试引用文档here中提到的“更新”表。

我已检查数据库是否正确,顶部是USE数据库语句。


    CREATE TABLE foo ( bar int )
    GO

    CREATE TRIGGER foobar ON foo
        AFTER INSERT, UPDATE
    AS
    SELECT bar FROM inserted ;
    SELECT bar FROM updated  ; --> problem!
    SELECT bar FROM deleted  ;
    GO

    INSERT INTO foo VALUES (3) ;
    UPDATE foo SET bar = 2 WHERE bar = 3;

我期望从选择中看到2或3(即前图像或后图像),但select * from updated产生错误:Invalid object name 'updated'.

sql-server database-trigger
1个回答
1
投票

SQL Server使用两种类型的桥接表(插入和删除)来帮助触发器实现“插入”,“更新”,“删除”。

以下是Microsoft的参考:https://docs.microsoft.com/en-us/sql/relational-databases/triggers/use-the-inserted-and-deleted-tables?view=sql-server-2017

© www.soinside.com 2019 - 2024. All rights reserved.