我有下表
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)
它显示了这个:
但我期待这样的事情:
inserted
表中显示了一行。inserted
表中显示了两行。inserted
表中显示了三行。根据msdn.microsoft,所有插入的行都在此表中。
如何访问inserted
表,以便我可以看到所有预期的行而不是单独的?
答案 0 :(得分:1)
你做不到。从microsoft.com上的Use the inserted and deleted Tables文章中,您可以阅读:
在INSERT和UPDATE语句期间,inserted表存储受影响行的副本。
这意味着inserted
表只包含当前INSERT
或UPDATE
语句的行。
如果您确实希望查看多个此类INSERT
或UPDATE
语句的所有行,则必须将这些行存储在您自己创建的表中。
答案 1 :(得分:0)
触发器中有2个表可用,插入和删除。表XXX上的每个更新实际上是来自XXX的删除行X,然后是表XXX中的行X的插入。因此插入触发器内部是插入内容的副本。你可以用触发器做很多事情,但触发器很危险。
例如,在性能演出中,我发现一个巨大的SP由触发器运行,我们放弃它并且数据库重新联机。或者另一个例子,如果您对审核登录执行了错误的触发操作,则可以关闭服务器。
答案 2 :(得分:0)
如TT所述,如果要查看所有插入的记录,则需要将“触发器”更改为以下内容:
CREATE TRIGGER Trig
ON Data
FOR INSERT
AS
BEGIN
Select * into "tablename"
from
(Select * from inserted) Ins
END