SQL SERVER。 TSQL。在所有其他触发器和所有其他过程之后执行我的过程

时间:2015-01-28 09:07:43

标签: sql sql-server tsql stored-procedures sql-server-2012

如何在数据库中已有的所有触发器和程序之后执行我的程序?

我有一个很大的数据库,有很多表,有很多列。

此数据库不是由我创建的。

我需要在数据库中已经存在的所有触发器和过程结束时调用我自己的过程。

例如:当我进行插入时,数据库会自动启动许多触发器和过程。

在每个触发器和过程结束时,我需要调用我编写的一个过程。

怎么办?

更新:

或者至少我能知道哪个是数据库中的最后一个触发器?那么我可以进入程序吗?

1 个答案:

答案 0 :(得分:0)

您可以使用以下查询找到最后一个触发器

select sys.tables.name,sys.triggers.name,sys.trigger_events.type
,sys.trigger_events.type_desc, is_first,is_last
,sys.triggers.create_date,sys.triggers.modify_date
from sys.triggers inner join sys.trigger_events
on sys.trigger_events.object_id = sys.triggers.object_id
inner join sys.tables on sys.tables.object_id = sys.triggers.parent_id
WHERE is_Last=1
order by modify_date

如果没有触发器具有is_last = 1,则表示未设置触发器执行顺序。要自己设置触发器执行顺序,您可以使用以下查询

EXEC sp_settriggerorder 
@triggername= 'Sales.uSalesOrderHeader', 
@order='Last', 
@stmttype = 'UPDATE';