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.