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