Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Sử dụng sys.trigger_event_types để liệt kê các loại sự kiện kích hoạt trong SQL Server

Trong SQL Server, bạn có thể sử dụng sys.trigger_event_types để trả về tất cả các 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 - Một mẫu nhỏ

Ở đây, tôi sử dụng TOP() mệnh đề để trả về mười hàng đầu tiên từ chế độ xem.

 CHỌN HÀNG ĐẦU (10) * TỪ sys.trigger_event_types; 

Kết quả:

 + -------- + ------------------- + --------------- + | loại | type_name | parent_type || -------- + ------------------- + --------------- || 21 | CREATE_TABLE | 10018 || 22 | ALTER_TABLE | 10018 || 23 | DROP_TABLE | 10018 || 24 | CREATE_INDEX | 10020 || 25 | ALTER_INDEX | 10020 || 26 | DROP_INDEX | 10020 || 27 | CREATE_STATISTICS | 10021 || 28 | UPDATE_STATISTICS | 10021 || 29 | DROP_STATISTICS | 10021 || 34 | CREATE_SYNONYM | 10022 | + -------- + ------------------- + --------------- +  

Nếu tôi chọn tất cả các hàng, tôi nhận được 284 khi sử dụng SQL Server 2017 và 291 trong SQL Server 2019.

Ví dụ 2 - Lấy phụ huynh

Nếu bạn xem kỹ kết quả của sys.trigger_event_types , bạn sẽ thấy rằng các sự kiện kích hoạt DDL có thứ bậc.

Dưới đây là một ví dụ cho thấy thứ bậc của CREATE_TABLE sự kiện kích hoạt.

 WITH event_types (Type, Type_Name, Parent_Type, Level) AS (SELECT type, type_name, parent_type, 1 AS level FROM sys.trigger_event_types WHERE type_name ='CREATE_TABLE' UNION TẤT CẢ CHỌN tet.type, tet.type_name, tet.parent_type , et.level + 1 cấp AS TỪ event_types AS et JOIN sys.trigger_event_types AS tet ON et.parent_type =tet.type) SELECT Loại, Type_name, Parent_TypeFROM event_typesORDER BY cấp DESC; 

Kết quả:

 + -------- + --------------------------- + --------- ------ + | Loại | Type_name | Parent_Type || -------- + --------------------------- + ---------- ----- || 10001 | DDL_EVENTS | NULL || 10016 | DDL_DATABASE_LEVEL_EVENTS | 10001 || 10017 | DDL_TABLE_VIEW_EVENTS | 10016 || 10018 | DDL_TABLE_EVENTS | 10017 || 21 | CREATE_TABLE | 10018 | + -------- + --------------------------- + ---------- ----- + 

Chúng ta có thể thấy rằng DDL_EVENTS ở đầu phân cấp, theo sau là DDL_DATABASE_LEVEL_EVENTS , v.v., cho đến khi chúng tôi đạt được CREATE_TABLE .

Một cách khác để hình dung nó như thế này:

 DDL_EVENTS> DDL_DATABASE_LEVEL_EVENTS> DDL_TABLE_VIEW_EVENTS> DDL_TABLE_EVENTS> CREATE_TABLE 

Bạn có thể thay thế CREATE_TABLE trong truy vấn với bất kỳ loại sự kiện nào khác để xem thứ bậc của nó.

Ngoài ra, hãy xem Truy vấn trả về danh sách phân cấp các loại sự kiện trình kích hoạt trong SQL Server để trả về danh sách phân cấp các loại sự kiện trình kích hoạt.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server - nối các hàng thành danh sách được phân tách bằng dấu phẩy

  2. Trả lại danh sách các bảng từ một máy chủ được liên kết trong SQL Server (ví dụ T-SQL)

  3. Chuyển đổi văn bản hộp văn bản thành số nguyên

  4. SQL Server:Làm cách nào để lấy tham chiếu khóa ngoại từ information_schema?

  5. Dapper.NET và proc được lưu trữ với nhiều bộ kết quả