Di SQL Server, Anda dapat menggunakan sys.trigger_event_types
untuk mengembalikan semua peristiwa atau grup peristiwa tempat pemicu dapat diaktifkan.
Contoh 1 – Contoh Kecil
Di sini, saya menggunakan TOP()
klausa untuk mengembalikan sepuluh baris pertama dari tampilan.
SELECT TOP(10) * FROM sys.trigger_event_types;
Hasil:
+--------+-------------------+---------------+| ketik | 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 |+--------+-------------------+---------------+Jika saya memilih semua baris, saya mendapatkan 284 saat menggunakan SQL Server 2017 dan 291 di SQL Server 2019.
Contoh 2 – Mendapatkan Induk
Jika Anda melihat lebih dekat pada hasil
sys.trigger_event_types
, Anda akan melihat bahwa peristiwa pemicu DDL bersifat hierarkis.Berikut adalah contoh yang menunjukkan hierarki
CREATE_TABLE
peristiwa pemicu.DENGAN 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 ALL SELECT tet.type, tet.type_name, tet.parent_type , et.level + 1 AS level FROM event_types AS et GABUNG sys.trigger_event_types AS tet ON et.parent_type =tet.type)SELECT Type, Type_name, Parent_TypeFROM event_typesORDER BY level DESC;Hasil:
+--------+---------------------------+-------- ------+| Ketik | 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 |+--------+----------------------------+---------- -----+Kita dapat melihat bahwa
DDL_EVENTS
berada di bagian atas hierarki, diikuti olehDDL_DATABASE_LEVEL_EVENTS
, dll, hingga kita mencapaiCREATE_TABLE
.Cara lain untuk memvisualisasikannya adalah seperti ini:
DDL_EVENTS> DDL_DATABASE_LEVEL_EVENTS> DDL_TABLE_VIEW_EVENTS> DDL_TABLE_EVENTS> CREATE_TABLEAnda dapat mengganti
CREATE_TABLE
dalam kueri dengan jenis peristiwa lain untuk melihat hierarkinya.Lihat juga Kueri yang Mengembalikan Daftar Hierarki Jenis Peristiwa Pemicu di SQL Server untuk mengembalikan daftar hierarki jenis peristiwa pemicu.