Wenn wir auf fremden Datenbanken arbeiten kommt es häufig vor, dass unerwartete Dinge passieren 🙂 die man sich beim besten Willen nicht erklären kann! Oft sind hier Triggers am Werk! Diese merkt man auf den ersten Blick gar nicht. Oft hat man schon ein paar StĂĽndchen gesucht bevor die leuchtende Idee kommt „es muss ein Trigger sein!“.
Wie kann ich die Triggers in Microsoft SQL-Server anzeigen lassen?
Folgendes Statement hatte ich mal vor Jahren gefunden, leider kenne ich die Quelle nicht mehr um diese zu Verlinken.
SELECT so.name AS trigger_name,
USER_NAME(so.uid) AS trigger_owner,
USER_NAME(so2.uid) AS table_schema,
OBJECT_NAME(so.parent_obj) AS table_name,
OBJECTPROPERTY( so.id, 'ExecIsUpdateTrigger') AS isupdate,
OBJECTPROPERTY( so.id, 'ExecIsDeleteTrigger') AS isdelete,
OBJECTPROPERTY( so.id, 'ExecIsInsertTrigger') AS isinsert,
OBJECTPROPERTY( so.id, 'ExecIsAfterTrigger') AS isafter,
OBJECTPROPERTY( so.id, 'ExecIsInsteadOfTrigger') AS isinsteadof,
OBJECTPROPERTY(so.id, 'ExecIsTriggerDisabled') AS disabled,
c.text
FROM sysobjects AS so
INNER JOIN sysobjects AS so2 ON so.parent_obj = so2.Id
INNER JOIN syscomments AS c ON so.id = c.id
WHERE so.type = 'TR' AND OBJECT_NAME(so.parent_obj) = 'MeineTabelle'
Wie kann ich die Triggers unter Oracle anzeigen lassen?
Unter Oracle ist das noch einfacher:
SELECT * FROM all_triggers WHERE TABLE_NAME = 'MeineTabelle'