INSERTED表确实存在

时间:2014-03-07 14:39:30

标签: sql sql-server

为什么我可以使用此选择:

SELECT 1 FROM INSERTED

进入触发器,但不像另一个选择那样运行?

我收到了这个错误:

  

Msg 208,Level 16,State 1,Line 1

     

无效的对象名称“INSERTED”。

它适用于此声明(在触发器内):

IF EXISTS(SELECT 1 FROM INSERTED) AND
      NOT EXISTS(SELECT 1 FROM DELETED)
   BEGIN
      -- AFTER INSERT
      UPDATE VEIC
      SET
         VEIC.FLAG = 'I'
      FROM
         DBVEICULO VEIC
            INNER JOIN INSERTED INS ON INS.ID_VEICULO = VEIC.ID_VEICULO

触发器> http://pastebin.com/9Dh4TUPc

1 个答案:

答案 0 :(得分:2)

As per the documentation - Create Trigger (Transact-SQL)

  

DML触发器使用已删除和插入的逻辑(概念)表。它们在结构上类似于定义触发器的表,即尝试用户操作的表。已删除和已插入的表包含可由用户操作更改的行的旧值或新值。例如,要检索已删除表中的所有值,请使用:

因此,两个表INSERTEDDELETED仅存在于触发器的上下文中。