获取导致触发器执行的插入行

Get the inserted row causing the execution of the trigger

我想获取导致触发器执行的行的值。所以我可以将它(作为参数)传递给存储过程。

存储过程接受以下脚本中定义的 table 类型作为输入:

CREATE TYPE PersonTableType AS TABLE
(
    Id int primary key,
    FirstName nvarchar(50),
    LastName nvarchar(50)
)

过程(在 ArchivePerson table 中插入来自触发器的插入行)

Create PROCEDURE sp1
@PersonType PersonTableType Readonly

As
BEGIN
    Insert Into ArchivePerson 
    Select * From @PersonType
END

如何声明我的触发器? 我试过类似的东西:

Alter TRIGGER insertPerson 
   ON  Person 
   AFTER Insert
AS 
BEGIN
    declare @PersonType PersonTableType;

    ??

    Exec sp1 @PersonType

END

inserted table 有行,嗯,插入。它与您原来的 [Person] table 具有相同的列,因此请使用适当的列:

Alter TRIGGER insertPerson 
   ON  Person 
   AFTER Insert
AS 
BEGIN
    declare @PersonType PersonTableType;

    insert @PersonType(Id,FirstName,LastName)
        select <corresponding columns>
        from inserted

    Exec sp1 @PersonType

END