获取导致触发器执行的插入行
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
我想获取导致触发器执行的行的值。所以我可以将它(作为参数)传递给存储过程。
存储过程接受以下脚本中定义的 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