我想获得触发执行的行值。因此我可以将它(作为参数)传递给存储过程。
存储过程接受下面脚本中定义的表类型作为输入:
CREATE TYPE PersonTableType AS TABLE
(
Id int primary key,
FirstName nvarchar(50),
LastName nvarchar(50)
)
过程(将从触发器插入的行插入到ArchivePerson表中)
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
表中有插入的行。它具有与原始[Person]表相同的列,因此使用适当的列:
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