【问题标题】:List of triggers for each table?每个表的触发器列表?
【发布时间】:2013-04-04 16:48:08
【问题描述】:

如何获取与每个表关联的触发器列表?

我试图得到这样的东西:

Table 1 – Trigger for Table 1 – Trigger for Table 1 – Trigger for Table 1

Table 2 – Trigger for Table 2 – Trigger for Table 2 – Trigger for Table 2

如果我可以轻松解释数据,则不必采用这种格式。

【问题讨论】:

标签: sql sql-server database tsql triggers


【解决方案1】:

试试这个 -

SELECT 
      object_name = s.name + '.' + o.name
    , trigger_name = t.name
    , o.type_desc
    , is_insert_trigger = OBJECTPROPERTY(t.[object_id], 'ExecIsInsertTrigger')
    , is_update_trigger = OBJECTPROPERTY(t.[object_id], 'ExecIsUpdateTrigger') 
    , is_delete_trigger = OBJECTPROPERTY(t.[object_id], 'ExecIsDeleteTrigger')
    , t.is_instead_of_trigger
    , t.is_disabled
FROM sys.objects o WITH (NOWAIT) 
JOIN sys.schemas s WITH (NOWAIT) ON o.[schema_id] = s.[schema_id]
JOIN sys.triggers t WITH (NOWAIT) ON o.[object_id] = t.parent_id
WHERE o.[type] = 'U'

【讨论】:

    【解决方案2】:
    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'
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-01
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 2014-08-24
      • 2013-11-29
      • 1970-01-01
      相关资源
      最近更新 更多