V SQL Server můžete použít sys.trigger_event_types
vrátit všechny události nebo skupiny událostí, na které se může spouštěč spustit.
Příklad 1 – Malá ukázka
Zde používám TOP()
klauzule pro vrácení prvních deseti řádků z pohledu.
SELECT TOP(10) * FROM sys.trigger_event_types;
Výsledek:
+--------+-------------------+---------------+| typ | název_typu | 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 |+--------+-------------------+---------------+Pokud vyberu všechny řádky, dostanu 284 při použití SQL Server 2017 a 291 v SQL Server 2019.
Příklad 2 – Získání rodiče
Pokud se podíváte pozorně na výsledky
sys.trigger_event_types
, uvidíte, že události spouštění DDL jsou hierarchické.Zde je příklad, který ukazuje hierarchii tabulky
CREATE_TABLE
spouštěcí událost.WITH event_types(Type, Type_Name, Parent_Type, Level) AS ( SELECT typ, type_name, parent_type, 1 AS level FROM sys.trigger_event_types WHERE type_name ='CREATE_TABLE' UNION ALL SELECT tet.type, tet.type_type, tet.parent_type , et.level + 1 AS úroveň FROM event_types AS et JOIN sys.trigger_event_types AS tet ON et.parent_type =tet.type)SELECT Type, Type_name, Parent_TypeFROM event_typesORDER BY level DESC;Výsledek:
+--------+---------------------------+--------- ------+| Typ | 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 |+--------+---------------------------+----------- -----+Vidíme, že
DDL_EVENTS
je na vrcholu hierarchie, následujeDDL_DATABASE_LEVEL_EVENTS
atd., dokud nedosáhnemeCREATE_TABLE
.Další způsob, jak si to představit, je tento:
DDL_EVENTS> DDL_DATABASE_LEVEL_EVENTS> DDL_TABLE_VIEW_EVENTS> DDL_TABLE_EVENTS> CREATE_TABLEMůžete nahradit
CREATE_TABLE
v dotazu s jakýmkoli jiným typem události, abyste viděli jeho hierarchii.Viz také Dotaz, který vrací hierarchický seznam typů spouštěcích událostí na serveru SQL, kde naleznete hierarchický seznam typů spouštěcích událostí.