No SQL Server, você pode usar
sys.trigger_event_types
para retornar todos os eventos ou grupos de eventos nos quais um gatilho pode ser acionado. Exemplo 1 – Uma pequena amostra
Aqui, eu uso o
TOP()
cláusula para retornar as dez primeiras linhas da exibição. SELECT TOP(10) * FROM sys.trigger_event_types;
Resultado:
+--------+-------------------+---------------+| tipo | 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 |+--------+-------------------+---------------+
Se eu selecionar todas as linhas, obterei 284 ao usar o SQL Server 2017 e 291 no SQL Server 2019.
Exemplo 2 – Obtendo o pai
Se você observar atentamente os resultados desys.trigger_event_types
, você verá que os eventos de gatilho DDL são hierárquicos.
Aqui está um exemplo que mostra a hierarquia doCREATE_TABLE
evento de gatilho.
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 ALL SELECT tet.type, tet.type_name, tet.parent_type , et.level + 1 AS level 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;
Resultado:
+--------+---------------------------+--------- ------+| Tipo | Nome_tipo | Tipo_pai ||--------+---------------------------+---------- -----|| 10001 | DDL_EVENTS | NULO || 10016 | DDL_DATABASE_LEVEL_EVENTS | 10001 || 10017 | DDL_TABLE_VIEW_EVENTS | 10016 || 10018 | DDL_TABLE_EVENTS | 10017 || 21 | CREATE_TABLE | 10018 |+--------+---------------------------+---------- -----+
Podemos ver queDDL_EVENTS
está no topo da hierarquia, seguido porDDL_DATABASE_LEVEL_EVENTS
, etc, até chegarmos aCREATE_TABLE
.
Outra forma de visualizar é assim:
DDL_EVENTS> DDL_DATABASE_LEVEL_EVENTS> DDL_TABLE_VIEW_EVENTS> DDL_TABLE_EVENTS> CREATE_TABLE
Você pode substituirCREATE_TABLE
na consulta com qualquer outro tipo de evento para ver sua hierarquia.
Consulte também Consulta que retorna uma lista hierárquica de tipos de eventos de gatilho no SQL Server para retornar uma lista hierárquica de tipos de eventos de gatilho.