В SQL Server можете да използвате следните T-SQL заявки, за да върнете йерархичен списък с типове задействащи събития.
Тези примери правят заявка за sys.trigger_event_types
изглед, който връща ред за всяко събитие или група събития, за които може да се задейства тригер.
Пример 1 – Връщане на всички редове
Тази заявка връща всички редове в sys.trigger_event_types
изглед.
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;
Тази заявка връща 284 реда в моята среда на SQL Server 2017 и 291 реда в моята среда на SQL Server 2019.
Пример 2 – Връщане на единичен тип събитие
Можете да модифицирате предишната заявка, така че да връща конкретен тип събитие, изброено в стил на галерия.
Ето пример за връщане на CREATE_TABLE
тип събитие в стил на галета:
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';
Резултат:
+--------------------------------------------------------------------------------------------------+ | Result | |--------------------------------------------------------------------------------------------------| | DDL_EVENTS > DDL_DATABASE_LEVEL_EVENTS > DDL_TABLE_VIEW_EVENTS > DDL_TABLE_EVENTS > CREATE_TABLE | +--------------------------------------------------------------------------------------------------+