Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Utilisez sys.trigger_event_types pour répertorier les types d'événements déclencheurs dans SQL Server

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 de DDL_DATABASE_LEVEL_EVENTS , etc, jusqu'à ce que nous atteignions CREATE_TABLE .

Voici une autre façon de le visualiser :

DDL_EVENTS> DDL_DATABASE_LEVEL_EVENTS> DDL_TABLE_VIEW_EVENTS> DDL_TABLE_EVENTS> CREATE_TABLE

Vous 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.