In SQL Server können Sie sys.trigger_event_types
verwenden um alle Ereignisse oder Ereignisgruppen zurückzugeben, bei denen ein Trigger ausgelöst werden kann.
Beispiel 1 – Eine kleine Stichprobe
Hier verwende ich den TOP()
-Klausel, um die ersten zehn Zeilen aus der Ansicht zurückzugeben.
SELECT TOP(10) * FROM sys.trigger_event_types;
Ergebnis:
+--------+-------------------+---------------+| Typ | Typname | parent_type ||--------+------------------+---------------|| 21 | CREATE_TABLE | 10018 || 22 | ALTER_TABLE | 10018 || 23 | DROP_TABLE | 10018 || 24 | CREATE_INDEX | 10020 || 25 | ALTER_INDEX | 10020 || 26 | DROP_INDEX | 10020 || 27 | CREATE_STATISTICS | 10021 || 28 | UPDATE_STATISTIK | 10021 || 29 | DROP_STATISTICS | 10021 || 34 | CREATE_SYNONYM | 10022 |+--------+-------------------+---------------+Wenn ich alle Zeilen auswähle, erhalte ich 284 bei Verwendung von SQL Server 2017 und 291 in SQL Server 2019.
Beispiel 2 – Den Elternteil bekommen
Wenn Sie sich die Ergebnisse von
sys.trigger_event_types
genau ansehen , sehen Sie, dass DDL-Trigger-Ereignisse hierarchisch sind.Hier ist ein Beispiel, das die Hierarchie von
CREATE_TABLE
zeigt Ereignis auslösen.WITH event_types(Type, Type_Name, Parent_Type, Level) AS ( SELECT type, type_name, parent_type, 1 AS level FROM sys.trigger_event_types WHERE type_name ='CREATE_TABLE' UNION ALL SELECT tet.type, tet.type_name, tet.parent_type , et.level + 1 AS level FROM event_types AS et JOIN sys.trigger_event_types AS tet ON et.parent_type =tet.type)SELECT Type, Type_name, Parent_TypeFROM event_typesORDER BY level DESC;Ergebnis:
+--------+---------------------+--------- ------+| Geben Sie | ein Typname | Parent_Type ||--------+------------------------------------+---------- -----|| 10001 | DDL_EREIGNISSE | NULL || 10016 | DDL_DATABASE_LEVEL_EVENTS | 10001 || 10017 | DDL_TABLE_VIEW_EVENTS | 10016 || 10018 | DDL_TABLE_EVENTS | 10017 || 21 | CREATE_TABLE | 10018 |+--------+----------------------+---------- -----+Wir können diese
DDL_EVENTS
sehen steht ganz oben in der Hierarchie, gefolgt vonDDL_DATABASE_LEVEL_EVENTS
usw., bis wirCREATE_TABLE
erreichen .Eine andere Möglichkeit, es zu visualisieren, ist wie folgt:
DDL_EVENTS> DDL_DATABASE_LEVEL_EVENTS> DDL_TABLE_VIEW_EVENTS> DDL_TABLE_EVENTS> CREATE_TABLESie können
CREATE_TABLE
ersetzen in der Abfrage mit jedem anderen Ereignistyp, um seine Hierarchie anzuzeigen.Siehe auch Abfrage, die eine hierarchische Liste von Auslöserereignistypen in SQL Server zurückgibt, um eine hierarchische Liste von Auslöserereignistypen zurückzugeben.