En SQL Server, puede usar las siguientes consultas T-SQL para obtener una lista jerárquica de tipos de eventos desencadenantes.
Estos ejemplos consultan el sys.trigger_event_types
vista, que devuelve una fila para cada evento o grupo de eventos en el que se puede activar un disparador.
Ejemplo 1:devolver todas las filas
Esta consulta devuelve todas las filas en sys.trigger_event_types
ver.
WITH event_types(Type, Type_Name, Parent_Type, Level, Sort) AS ( SELECT tet.type, tet.type_name, tet.parent_type, 1 AS Level, CONVERT(nvarchar(255), tet.type_name) FROM sys.trigger_event_types tet WHERE parent_type IS NULL UNION ALL SELECT tet.type, CONVERT(nvarchar(64), REPLICATE('| ' , Level) + tet.type_name), tet.parent_type, Level + 1, CONVERT(nvarchar(255), RTRIM(Sort) + ' > ' + tet.type_name) FROM sys.trigger_event_types AS tet INNER JOIN event_types AS et ON et.type = tet.parent_type ) SELECT Type_Name FROM event_types ORDER BY Sort;
Esa consulta devuelve 284 filas en mi entorno de SQL Server 2017 y 291 filas en mi entorno de SQL Server 2019.
Ejemplo 2:devolver un solo tipo de evento
Puede modificar la consulta anterior para que devuelva un tipo de evento específico, enumerado en estilo de ruta de navegación.
Aquí hay un ejemplo de cómo devolver CREATE_TABLE
tipo de evento en estilo de ruta de navegación:
WITH event_types(Type, Type_Name, Parent_Type, Level, Sort) AS ( SELECT tet.type, tet.type_name, tet.parent_type, 1 AS Level, CONVERT(nvarchar(255), tet.type_name) FROM sys.trigger_event_types tet WHERE parent_type IS NULL UNION ALL SELECT tet.type, CONVERT(nvarchar(64), REPLICATE('| ' , Level) + tet.type_name), tet.parent_type, Level + 1, CONVERT(nvarchar(255), RTRIM(Sort) + ' > ' + tet.type_name) FROM sys.trigger_event_types AS tet INNER JOIN event_types AS et ON et.type = tet.parent_type ) SELECT Sort AS [Result] FROM event_types WHERE RIGHT(Sort, 12) = 'CREATE_TABLE';
Resultado:
+--------------------------------------------------------------------------------------------------+ | Result | |--------------------------------------------------------------------------------------------------| | DDL_EVENTS > DDL_DATABASE_LEVEL_EVENTS > DDL_TABLE_VIEW_EVENTS > DDL_TABLE_EVENTS > CREATE_TABLE | +--------------------------------------------------------------------------------------------------+