Trong SQL Server, bạn có thể sử dụng các truy vấn T-SQL sau để trả về danh sách phân cấp các loại sự kiện trình kích hoạt.
Các ví dụ này truy vấn sys.trigger_event_types
chế độ xem, trả về một hàng cho mỗi sự kiện hoặc nhóm sự kiện mà trình kích hoạt có thể kích hoạt.
Ví dụ 1 - Trả lại tất cả các hàng
Truy vấn này trả về tất cả các hàng trong sys.trigger_event_types
xem.
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;
Truy vấn đó trả về 284 hàng trong môi trường SQL Server 2017 và 291 hàng trong môi trường SQL Server 2019 của tôi.
Ví dụ 2 - Trả về một loại sự kiện duy nhất
Bạn có thể sửa đổi truy vấn trước đó để nó trả về một loại sự kiện cụ thể, được liệt kê trong kiểu breadcrumb.
Đây là ví dụ về việc trả lại CREATE_TABLE
loại sự kiện trong kiểu 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';
Kết quả:
+--------------------------------------------------------------------------------------------------+ | Result | |--------------------------------------------------------------------------------------------------| | DDL_EVENTS > DDL_DATABASE_LEVEL_EVENTS > DDL_TABLE_VIEW_EVENTS > DDL_TABLE_EVENTS > CREATE_TABLE | +--------------------------------------------------------------------------------------------------+