2017-12-18 181 views
1

我有一个存储过程在一组表中删除并重新插入后,运行一组表,所有属于同一架构[DATA_Countries]SQL Server - 在架构中的触发器AFTER后触发表

该操作是由另一个应用程序执行的,该应用程序删除并重新创建目标表,但无法控制该目标表。

由于每次都删除并重新创建表,因此我无法在每个目标表上使用触发器。

有没有办法在每次表插入特定模式时返回一个触发器,以返回此类表的名称并启动参数化存储过程?

谢谢!

+0

您可以创建数据库触发器,是的,这可能会触发DDL更改。触发器将开始'CREATE TRIGGER [YourTriggername] ON DATABASE FOR CREATE_TABLE AS ...'。查看[CREATE TRIGGER(Transact-SQL)](https://docs.microsoft.com/zh-cn/sql/t-sql/statements/create-trigger-transact-sql)。 – Larnu

+0

谢谢。已经创建了一个AFTER数据库触发器,它可以工作。 关于如何访问正在插入的表的名称/模式的任何想法? –

回答

0

是的,您可以在SQL Server上创建DDL触发器来跟踪DDL更改。例如,如果我想跟踪我的数据库的AdventureWorks中的存储过程的变化,我可以创造这样的

CREATE TRIGGER td_ProcTrack 
ON AdventureWorks 
FOR CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE 
AS 
BEGIN 

<my code> 

END 

触发转寄此Article更详细的例子