Dans SQL Server, vous pouvez utiliser sys.trigger_event_types
pour renvoyer tous les événements ou groupes d'événements sur lesquels un déclencheur peut se déclencher.
Exemple 1 - Un petit échantillon
Ici, j'utilise le TOP()
clause pour renvoyer les dix premières lignes de la vue.
SELECT TOP(10) * FROM sys.trigger_event_types ;
Résultat :
+--------+------------------+---------------+| taper | nom_type | type_parent ||--------+------------------+---------------|| 21 | CREATE_TABLE | 10018 || 22 | ALTER_TABLE | 10018 || 23 | DROP_TABLE | 10018 || 24 | CRÉER_INDEX | 10020 || 25 | ALTER_INDEX | 10020 || 26 | DROP_INDEX | 10020 || 27 | CREATE_STATISTICS | 10021 || 28 | MISE À JOUR_STATISTIQUES | 10021 || 29 | DROP_STATISTIQUES | 10021 || 34 | CREATE_SYNONYME | 10022 |+--------+------------------------------+---------------+Si je sélectionne toutes les lignes, j'obtiens 284 lorsque j'utilise SQL Server 2017 et 291 dans SQL Server 2019.
Exemple 2 - Obtenir le parent
Si vous regardez attentivement les résultats de
sys.trigger_event_types
, vous verrez que les événements déclencheurs DDL sont hiérarchiques.Voici un exemple qui montre la hiérarchie du
CREATE_TABLE
événement déclencheur.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;Résultat :
+--------+----------------------+--------- ------+| Taper | nom_type | Type_parent ||--------+-----------------------------------+---------- -----|| 10001 | DDL_EVENTS | NUL || 10016 | DDL_DATABASE_LEVEL_EVENTS | 10001 || 10017 | DDL_TABLE_VIEW_EVENTS | 10016 || 10018 | DDL_TABLE_EVENTS | 10017 || 21 | CREATE_TABLE | 10018 |+--------+----------------------------------------+---------- -----+Nous pouvons voir que
DDL_EVENTS
est au sommet de la hiérarchie, suivi deDDL_DATABASE_LEVEL_EVENTS
, etc, jusqu'à ce que nous atteignionsCREATE_TABLE
.Voici une autre façon de le visualiser :
DDL_EVENTS> DDL_DATABASE_LEVEL_EVENTS> DDL_TABLE_VIEW_EVENTS> DDL_TABLE_EVENTS> CREATE_TABLEVous pouvez remplacer
CREATE_TABLE
dans la requête avec n'importe quel autre type d'événement pour voir sa hiérarchie.Consultez également Requête qui renvoie une liste hiérarchique des types d'événements déclencheurs dans SQL Server pour renvoyer une liste hiérarchique des types d'événements déclencheurs.