En SQL Server, puede usar sys.trigger_event_types
para devolver todos los eventos o grupos de eventos en los que se puede disparar un disparador.
Ejemplo 1:una pequeña muestra
Aquí, uso el TOP()
cláusula para devolver las primeras diez filas de la vista.
SELECT TOP(10) * FROM sys.trigger_event_types;
Resultado:
+--------+-------------------+---------------+ | type | 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 | +--------+-------------------+---------------+
Si selecciono todas las filas, obtengo 284 cuando uso SQL Server 2017 y 291 en SQL Server 2019.
Ejemplo 2:Obtener el padre
Si observa detenidamente los resultados de sys.trigger_event_types
, verá que los eventos de activación de DDL son jerárquicos.
Aquí hay un ejemplo que muestra la jerarquía de CREATE_TABLE
desencadenar evento.
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_Type FROM event_types ORDER BY level DESC;
Resultado:
+--------+---------------------------+---------------+ | Type | 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 | +--------+---------------------------+---------------+
Podemos ver que DDL_EVENTS
está en la parte superior de la jerarquía, seguido de DDL_DATABASE_LEVEL_EVENTS
, etc, hasta llegar a CREATE_TABLE
.
Otra forma de visualizarlo es así:
DDL_EVENTS > DDL_DATABASE_LEVEL_EVENTS > DDL_TABLE_VIEW_EVENTS > DDL_TABLE_EVENTS > CREATE_TABLE
Puede reemplazar CREATE_TABLE
en la consulta con cualquier otro tipo de evento para ver su jerarquía.
Consulte también Consulta que devuelve una lista jerárquica de tipos de eventos de activación en SQL Server para obtener una lista jerárquica de tipos de eventos de activación.