Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Use sys.trigger_event_types para listar tipos de eventos de gatilho no SQL Server


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 de sys.trigger_event_types , você verá que os eventos de gatilho DDL são hierárquicos.

Aqui está um exemplo que mostra a hierarquia do CREATE_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 que DDL_EVENTS está no topo da hierarquia, seguido por DDL_DATABASE_LEVEL_EVENTS , etc, até chegarmos a CREATE_TABLE .

Outra forma de visualizar é assim:
DDL_EVENTS> DDL_DATABASE_LEVEL_EVENTS> DDL_TABLE_VIEW_EVENTS> DDL_TABLE_EVENTS> CREATE_TABLE

Você pode substituir CREATE_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.