Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come restituire un elenco di eventi trigger in SQL Server

È possibile utilizzare T-SQL per restituire un elenco di eventi trigger in un database in SQL Server.

Puoi farlo usando sys.trigger_events . Questa vista del catalogo di sistema restituisce una riga per ogni evento o gruppo di eventi su cui può essere attivato un trigger.

Esempio 1 – Utilizzo di base

Ecco un esempio da dimostrare.

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

Risultato:

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

In questo caso sto usando OBJECT_NAME() funzione per ottenere il nome di ogni trigger dal suo object_id .

Esempio 2:restringerlo a un trigger specifico

Puoi anche usare OBJECT_NAME() per filtrare i risultati in base a un nome trigger specifico utilizzando un WHERE clausola.

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

Risultato:

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

Esempio 3 – Restituisci tutte le colonne

Questo esempio restituisce tutte le colonne di questa vista.

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

Risultato (usando l'output verticale):

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

In questo esempio ho presentato i risultati utilizzando l'output verticale in modo da non dover scorrere orizzontalmente.

Ottenere tutti i tipi di eventi trigger

È possibile interrogare la vista del catalogo sys.trigger_event_types per ottenere un elenco di tutti i tipi di eventi trigger. Questi sono gli eventi o i gruppi di eventi su cui può essere attivato un trigger.

Puoi anche eseguire una query che li elenchi gerarchicamente.