需要获取在Delete操作上触发的触发器列表

时间:2019-01-16 08:27:56

标签: sql-server sql-server-2012

在我的数据库中有多个触发器。由此,我需要获取在Delete操作上触发的触发器列表。因此,任何人都可以向我提供这样的脚本,以获取在删除操作中执行的触发器列表。

谢谢。

1 个答案:

答案 0 :(得分:3)

  

在我的数据库中没有触发器。

如果您的数据库没有任何触发器,则删除某些内容时不会触发任何触发器。如果在删除父记录时发现子记录已删除,则可以为ON DELETE CASCADE设置FOREIGN KEYYou can read about that here.

如果您要列出数据库中的所有触发器(即使您说没有任何触发器),请then this answer is a good way to do it.

SELECT 
     sysobjects.name AS trigger_name 
    ,USER_NAME(sysobjects.uid) AS trigger_owner 
    ,s.name AS table_schema 
    ,OBJECT_NAME(parent_obj) AS table_name 
    ,OBJECTPROPERTY( id, 'ExecIsUpdateTrigger') AS isupdate 
    ,OBJECTPROPERTY( id, 'ExecIsDeleteTrigger') AS isdelete 
    ,OBJECTPROPERTY( id, 'ExecIsInsertTrigger') AS isinsert 
    ,OBJECTPROPERTY( id, 'ExecIsAfterTrigger') AS isafter 
    ,OBJECTPROPERTY( id, 'ExecIsInsteadOfTrigger') AS isinsteadof 
    ,OBJECTPROPERTY(id, 'ExecIsTriggerDisabled') AS [disabled] 
FROM sysobjects 
/*
INNER JOIN sysusers 
    ON sysobjects.uid = sysusers.uid 
*/  
INNER JOIN sys.tables t 
    ON sysobjects.parent_obj = t.object_id 

INNER JOIN sys.schemas s 
    ON t.schema_id = s.schema_id 
WHERE sysobjects.type = 'TR'