触发器:插入的表是如何工作的?如何访问它的行?

Jaz*_*azz 5 sql t-sql sql-server database-trigger

我有下表

Data --Table name
ID -- Identity column
PCode -- Postal Code
Run Code Online (Sandbox Code Playgroud)

我创建了以下触发器:

CREATE TRIGGER Trig
ON Data
FOR INSERT
AS
BEGIN 

    Select * from inserted

END
Run Code Online (Sandbox Code Playgroud)

并插入以下值

INSERT INTO Data VALUES (125)
INSERT INTO Data VALUES (126)
INSERT INTO Data VALUES (127)
Run Code Online (Sandbox Code Playgroud)

它显示了这一点:

在此处输入图片说明

但我期待这样的事情:

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

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


如何访问inserted表格以便我可以看到所有预期的行而不是单独看到?

TT.*_*TT. 6

你不能。从microsoft.com 上的使用插入和删除的表文章中,您可以阅读:

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

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

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