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.