In SQL Server puoi utilizzare le seguenti query T-SQL per restituire un elenco gerarchico di tipi di eventi trigger.
Questi esempi interrogano sys.trigger_event_types view, che restituisce una riga per ogni evento o gruppo di eventi su cui può essere attivato un trigger.
Esempio 1 – Restituisci tutte le righe
Questa query restituisce tutte le righe in sys.trigger_event_types visualizza.
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;
Quella query restituisce 284 righe nel mio ambiente SQL Server 2017 e 291 righe nel mio ambiente SQL Server 2019.
Esempio 2:restituire un tipo di evento singolo
Puoi modificare la query precedente in modo che restituisca un tipo di evento specifico, elencato in stile breadcrumb.
Ecco un esempio di restituzione di CREATE_TABLE tipo di evento in stile breadcrumb:
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';
Risultato:
+--------------------------------------------------------------------------------------------------+ | Result | |--------------------------------------------------------------------------------------------------| | DDL_EVENTS > DDL_DATABASE_LEVEL_EVENTS > DDL_TABLE_VIEW_EVENTS > DDL_TABLE_EVENTS > CREATE_TABLE | +--------------------------------------------------------------------------------------------------+