Dans SQL Server, vous pouvez utiliser les requêtes T-SQL suivantes pour renvoyer une liste hiérarchique des types d'événements déclencheurs.
Ces exemples interrogent les sys.trigger_event_types
view, qui renvoie une ligne pour chaque événement ou groupe d'événements sur lequel un déclencheur peut se déclencher.
Exemple 1 – Renvoyer toutes les lignes
Cette requête renvoie toutes les lignes du sys.trigger_event_types
vue.
WITH event_types(Type, Type_Name, Parent_Type, Level, Sort) AS ( SELECT tet.type, tet.type_name, tet.parent_type, 1 AS Level, CONVERT(nvarchar(255), tet.type_name) FROM sys.trigger_event_types tet WHERE parent_type IS NULL UNION ALL SELECT tet.type, CONVERT(nvarchar(64), REPLICATE('| ' , Level) + tet.type_name), tet.parent_type, Level + 1, CONVERT(nvarchar(255), RTRIM(Sort) + ' > ' + tet.type_name) FROM sys.trigger_event_types AS tet INNER JOIN event_types AS et ON et.type = tet.parent_type ) SELECT Type_Name FROM event_types ORDER BY Sort;
Cette requête renvoie 284 lignes dans mon environnement SQL Server 2017 et 291 lignes dans mon environnement SQL Server 2019.
Exemple 2 – Renvoyer un seul type d'événement
Vous pouvez modifier la requête précédente afin qu'elle renvoie un type d'événement spécifique, répertorié dans le style fil d'Ariane.
Voici un exemple de renvoi du CREATE_TABLE
type d'événement en style fil d'Ariane :
WITH event_types(Type, Type_Name, Parent_Type, Level, Sort) AS ( SELECT tet.type, tet.type_name, tet.parent_type, 1 AS Level, CONVERT(nvarchar(255), tet.type_name) FROM sys.trigger_event_types tet WHERE parent_type IS NULL UNION ALL SELECT tet.type, CONVERT(nvarchar(64), REPLICATE('| ' , Level) + tet.type_name), tet.parent_type, Level + 1, CONVERT(nvarchar(255), RTRIM(Sort) + ' > ' + tet.type_name) FROM sys.trigger_event_types AS tet INNER JOIN event_types AS et ON et.type = tet.parent_type ) SELECT Sort AS [Result] FROM event_types WHERE RIGHT(Sort, 12) = 'CREATE_TABLE';
Résultat :
+--------------------------------------------------------------------------------------------------+ | Result | |--------------------------------------------------------------------------------------------------| | DDL_EVENTS > DDL_DATABASE_LEVEL_EVENTS > DDL_TABLE_VIEW_EVENTS > DDL_TABLE_EVENTS > CREATE_TABLE | +--------------------------------------------------------------------------------------------------+