2016-11-13 51 views
0

我有以下表触发器:插入的表如何工作?如何访问其行?

Data --Table name 
ID -- Identity column 
PCode -- Postal Code 

我创建了以下触发:

CREATE TRIGGER Trig 
ON Data 
FOR INSERT 
AS 
BEGIN 

    Select * from inserted 

END 

并插入下面的值

INSERT INTO Data VALUES (125) 
INSERT INTO Data VALUES (126) 
INSERT INTO Data VALUES (127) 

它显示了这一点:

enter image description here

但我期待这样的事情:

  • 一号插入后,触发执行 - >一行显示在inserted表。
  • 第二次插入后,执行触发器 - >inserted表中显示两行。
  • 第3次插入后,执行触发器 - >inserted表中显示三行。

根据msdn.microsoft插入的所有行都在此表中。


如何访问inserted表,以便我可以看到所有预期的行而不是分开的?

回答

1

你不能。从microsoft.com上的Use the inserted and deleted Tables文章可以看到:

插入的表在INSERT和UPDATE语句中存储受影响的行的副本。

这意味着inserted表将只包含当前INSERTUPDATE语句行。

如果您确实想要查看多个此类INSERTUPDATE语句的所有行,则必须将这些行存储在您自己创建的表中。

0

在触发器中有2个表格可用,插入和删除。表XXX上的每个更新实际上是从XXX开始的删除行X,然后是表XXX中行X的插入。所以插入触发器内的是插入内容的副本。触发器可以做很多事情,但触发器很危险。

例如,在一个性能演出中,我发现一个巨大的SP由一个触发器运行,我们放弃它并且数据库恢复在线状态。或者另一个例子,如果你做了一个错误的审计登录的触发器,你可以关闭服务器。

相关问题