In SQL Server kunt u sys.trigger_event_types
. gebruiken om alle gebeurtenissen of gebeurtenisgroepen terug te geven waarop een trigger kan worden geactiveerd.
Voorbeeld 1 – Een kleine steekproef
Hier gebruik ik de TOP()
clausule om de eerste tien rijen uit de weergave te retourneren.
SELECT TOP(10) * FROM sys.trigger_event_types;
Resultaat:
+--------+-------------------+---------------+ | type | type_name | 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_STATISTICS | 10021 | | 29 | DROP_STATISTICS | 10021 | | 34 | CREATE_SYNONYM | 10022 | +--------+-------------------+---------------+
Als ik alle rijen selecteer, krijg ik 284 bij gebruik van SQL Server 2017 en 291 in SQL Server 2019.
Voorbeeld 2 – De ouder krijgen
Als je goed kijkt naar de resultaten van sys.trigger_event_types
, zult u zien dat DDL-triggergebeurtenissen hiërarchisch zijn.
Hier is een voorbeeld dat de hiërarchie toont van de CREATE_TABLE
triggergebeurtenis.
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_Type FROM event_types ORDER BY level DESC;
Resultaat:
+--------+---------------------------+---------------+ | Type | Type_name | Parent_Type | |--------+---------------------------+---------------| | 10001 | DDL_EVENTS | NULL | | 10016 | DDL_DATABASE_LEVEL_EVENTS | 10001 | | 10017 | DDL_TABLE_VIEW_EVENTS | 10016 | | 10018 | DDL_TABLE_EVENTS | 10017 | | 21 | CREATE_TABLE | 10018 | +--------+---------------------------+---------------+
We kunnen zien dat DDL_EVENTS
staat bovenaan de hiërarchie, gevolgd door DDL_DATABASE_LEVEL_EVENTS
, etc, totdat we CREATE_TABLE
. bereiken .
Een andere manier om het te visualiseren is als volgt:
DDL_EVENTS > DDL_DATABASE_LEVEL_EVENTS > DDL_TABLE_VIEW_EVENTS > DDL_TABLE_EVENTS > CREATE_TABLE
U kunt CREATE_TABLE
. vervangen in de query met een ander gebeurtenistype om de hiërarchie ervan te zien.
Zie ook Query die een hiërarchische lijst met typen triggergebeurtenissen retourneert in SQL Server om een hiërarchische lijst met typen triggergebeurtenissen te retourneren.