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 | +--------------------------------------------------------------------------------------------------+