sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo devolver una lista de eventos desencadenantes en SQL Server

Puede usar T-SQL para devolver una lista de eventos desencadenantes en una base de datos en SQL Server.

Puedes hacer esto usando sys.trigger_events . Esta vista de catálogo del sistema devuelve una fila para cada evento o grupo de eventos en los que se puede activar un disparador.

Ejemplo 1:uso básico

Aquí hay un ejemplo para demostrarlo.

USE Test;
SELECT 
  object_id,
  OBJECT_NAME(object_id) AS [Trigger Name],
  type_desc
FROM sys.trigger_events;

Resultado:

+-------------+-------------------+-------------+
| object_id   | Trigger Name      | type_desc   |
|-------------+-------------------+-------------|
| 286624064   | t1_insert_trigger | INSERT      |
| 2034106287  | t6ins             | INSERT      |
+-------------+-------------------+-------------+

En este caso estoy usando OBJECT_NAME() función para obtener el nombre de cada disparador de su object_id .

Ejemplo 2:limitarlo a un disparador específico

También puede usar OBJECT_NAME() para filtrar los resultados a un nombre de disparador específico usando un WHERE cláusula.

SELECT 
  object_id,
  OBJECT_NAME(object_id) AS [Trigger Name],
  type_desc
FROM sys.trigger_events
WHERE OBJECT_NAME(object_id) = 't1_insert_trigger';

Resultado:

+-------------+-------------------+-------------+
| object_id   | Trigger Name      | type_desc   |
|-------------+-------------------+-------------|
| 286624064   | t1_insert_trigger | INSERT      |
+-------------+-------------------+-------------+

Ejemplo 3:devolver todas las columnas

Este ejemplo devuelve todas las columnas de esta vista.

SELECT * 
FROM sys.trigger_events
WHERE OBJECT_NAME(object_id) = 't1_insert_trigger';

Resultado (usando salida vertical):

object_id             | 286624064
type                  | 1
type_desc             | INSERT
is_first              | 0
is_last               | 0
event_group_type      | NULL
event_group_type_desc | NULL
is_trigger_event      | 1

En este ejemplo, presenté los resultados utilizando la salida vertical para que no se vea obligado a desplazarse horizontalmente.

Obtención de todos los tipos de eventos desencadenantes

Puede consultar la vista de catálogo sys.trigger_event_types para obtener una lista de todos los tipos de eventos desencadenantes. Estos son los eventos o grupos de eventos en los que se puede activar un disparador.

También puede ejecutar una consulta que los enumere jerárquicamente.