In SQL Server können Sie die folgenden T-SQL-Abfragen verwenden, um eine hierarchische Liste von Auslöserereignistypen zurückzugeben.
Diese Beispiele fragen die sys.trigger_event_types
ab view, die eine Zeile für jedes Ereignis oder jede Ereignisgruppe zurückgibt, für die ein Trigger ausgelöst werden kann.
Beispiel 1 – Alle Zeilen zurückgeben
Diese Abfrage gibt alle Zeilen in sys.trigger_event_types
zurück ansehen.
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;
Diese Abfrage gibt 284 Zeilen in meiner SQL Server 2017-Umgebung und 291 Zeilen in meiner SQL Server 2019-Umgebung zurück.
Beispiel 2 – Einen einzelnen Ereignistyp zurückgeben
Sie können die vorherige Abfrage so ändern, dass sie einen bestimmten Ereignistyp zurückgibt, der im Breadcrumb-Stil aufgelistet ist.
Hier ist ein Beispiel für die Rückgabe von CREATE_TABLE
Ereignistyp im Breadcrumb-Stil:
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';
Ergebnis:
+--------------------------------------------------------------------------------------------------+ | Result | |--------------------------------------------------------------------------------------------------| | DDL_EVENTS > DDL_DATABASE_LEVEL_EVENTS > DDL_TABLE_VIEW_EVENTS > DDL_TABLE_EVENTS > CREATE_TABLE | +--------------------------------------------------------------------------------------------------+