【问题标题】:Help Understanding the inserted and deleted Table SQL Server帮助了解插入和删除的表 SQL Server
【发布时间】:2011-02-14 20:19:49
【问题描述】:

如果运行触发INSERT AFTER 触发器的INSERT INTO 语句。插入和删除的对象在触发器中代表什么表/行?例如,

INSERT INTO Person.person (personID, name) VALUES (1, 'robert')

CREATE TRIGGER myTrigger  
ON Person.person  
AFTER INSERT AS  
BEGIN  
 insert into Person.PersonMovies (personID, movieID)  
 select inserted.personID  from inserted   _--i know the code is incomplete, but i'm curious only about the inserted part._  
END  

我对插入的表保存了哪些记录感到困惑。是插入语句中的记录触发了触发器还是 Person.PersonMovies 表?

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    是的,插入/删除表使您的触发器代码可以访问由导致(触发)触发器的语句更改的记录。还要记住,您的语句可能会影响多行,因此您删除或插入的表可能有多条记录。

    【讨论】:

      【解决方案2】:

      伪表inserteddeleted 中的行基于您在ON 子句中定义的表。

      【讨论】:

        【解决方案3】:

        Inserted 表保存导致触发器触发的原始​​ Insert 语句中的行。

        另见this MSDN article

        【讨论】:

          【解决方案4】:

          插入和删除的伪表为表中由触发触发器的语句创建或删除的每一行保存一条记录。对于更新,删除的表保存旧版本的记录,而插入的表保存新的。伪表的模式与实际表相匹配。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-11-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-09-07
            相关资源
            最近更新 更多