【问题标题】: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'
希望对你有帮助