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