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

Como retornar uma lista de eventos de gatilho no SQL Server


Você pode usar o T-SQL para retornar uma lista de eventos de gatilho em um banco de dados no SQL Server.

Você pode fazer isso usando sys.trigger_events . Essa exibição do catálogo do sistema retorna uma linha para cada evento ou grupo de eventos no qual um acionador pode ser acionado.


Exemplo 1 – Uso básico


Aqui está um exemplo para demonstrar.
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      |
+-------------+-------------------+-------------+

Neste caso estou usando o OBJECT_NAME() função para obter o nome de cada acionador de seu object_id .

Exemplo 2 – Restringir a um gatilho específico


Você também pode usar OBJECT_NAME() para filtrar os resultados para um nome de gatilho específico usando um 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      |
+-------------+-------------------+-------------+

Exemplo 3 – Retornar todas as colunas


Este exemplo retorna todas as colunas desta exibição.
SELECT * 
FROM sys.trigger_events
WHERE OBJECT_NAME(object_id) = 't1_insert_trigger';

Resultado (usando saída 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

Neste exemplo, apresentei os resultados usando saída vertical para que você não seja forçado a rolar horizontalmente.

Obter todos os tipos de eventos de acionamento


Você pode consultar a exibição de catálogo sys.trigger_event_types para obter uma lista de todos os tipos de eventos de gatilho. Esses são os eventos ou grupos de eventos nos quais um gatilho pode ser acionado.

Você também pode executar uma consulta que os liste hierarquicamente.