我不确定这是否可行?我正在寻找一个将插入/删除/更新的表从触发器传递到存储过程的示例。
注意:我想将此触发器添加到数据库中的所有表中,并且我不想为每个表重写/生成触发器。
这样,如果表格改变,则不需要更改触发器。
e.g。像这样的东西:
/test-*/_aliases
答案 0 :(得分:0)
如果您的存储过程参数应声明为表值参数,则可以像下面这样执行此操作。
CREATE TRIGGER [schema].[myTable_myTrigger] ON [schema].[myTable]
AFTER INSERT
,UPDATE
,DELETE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @tableAfterChange TABLE (
COL1 DATATYPE
,COL2 DATATYPE
,...
)
DECLARE @tableBeforeChange TABLE (
COL1 DATATYPE
,COL2 DATATYPE
,...
)
INSERT @tableBeforeChange
SELECT *
FROM DELETED
INSERT @tableAfterChange
SELECT *
FROM INSERTED
EXEC dbo.myProcedure @tableBeforeChange
,@tableBeforeChange
END
答案 1 :(得分:0)
触发器位于特定表中,您的示例中为[myTable]。您可以获取表结构,因为您正在该表上创建触发器。我的理解是你确实希望在更改[myTable]
之后捕获更改前的数据和数据