SQL: Liste aller Trigger

Wenn man schnell eine Liste aller Trigger einer Datenbank benötigt, kann man entweder alle Tabellen einzeln durchsuchen, oder man sucht mit Hilfe von SQL Bordmitteln.

Eine schöne Methode fand ich bei Stackoverflow, die ich hier kurz wiedergeben möchte.

SELECT trigger_name = sysobjects.name,
trigger_owner = USER_NAME(sysobjects.uid),
table_schema = s.name,
table_name = OBJECT_NAME(parent_obj),
isupdate = OBJECTPROPERTY( id, 'ExecIsUpdateTrigger'), 
isdelete = OBJECTPROPERTY( id, 'ExecIsDeleteTrigger'),
isinsert = OBJECTPROPERTY( id, 'ExecIsInsertTrigger'), 
isafter = OBJECTPROPERTY( id, 'ExecIsAfterTrigger'),
isinsteadof = OBJECTPROPERTY( id, 'ExecIsInsteadOfTrigger'),
[disabled] = OBJECTPROPERTY(id, 'ExecIsTriggerDisabled')
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'

Eine alternative Abfrage für SQL2000

SELECT trigger_name = o.name, 
trigger_owner = 'x'/*USER_NAME(o.uid)*/,
table_schema = s.name, 
table_name = OBJECT_NAME(o.parent_obj),
isupdate = OBJECTPROPERTY(o.id, 'ExecIsUpdateTrigger'), 
isdelete = OBJECTPROPERTY(o.id, 'ExecIsDeleteTrigger'),
isinsert = OBJECTPROPERTY(o.id, 'ExecIsInsertTrigger'), 
isafter = OBJECTPROPERTY(o.id, 'ExecIsAfterTrigger'),
isinsteadof = OBJECTPROPERTY(o.id, 'ExecIsInsteadOfTrigger'),
[disabled] = OBJECTPROPERTY(o.id, 'ExecIsTriggerDisabled') 
FROM sysobjects o /*INNER JOIN sysusers ON sysobjects.uid = sysusers.uid*/
INNER JOIN sysobjects o2 ON o.parent_obj = o2.id
INNER JOIN sysusers s ON o2.uid = s.uid
WHERE o.type = 'TR'

Das SQL Skript gibt eine Liste der auf der Datenbank installierten Trigger aus und erspart sehr viel Sucharbeit.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert