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

Forespørgsel, der returnerer en hierarkisk liste over triggerhændelsestyper i SQL Server

I SQL Server kan du bruge følgende T-SQL-forespørgsler til at returnere en hierarkisk liste over triggerhændelsestyper.

Disse eksempler forespørger på sys.trigger_event_types visning, som returnerer en række for hver hændelse eller hændelsesgruppe, hvorpå en trigger kan udløses.

Eksempel 1 – Returner alle rækker

Denne forespørgsel returnerer alle rækker i sys.trigger_event_types se.

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;

Denne forespørgsel returnerer 284 rækker i mit SQL Server 2017-miljø og 291 rækker i mit SQL Server 2019-miljø.

Eksempel 2 – Returner en enkelt hændelsestype

Du kan ændre den forrige forespørgsel, så den returnerer en bestemt hændelsestype, angivet i brødkrummestil.

Her er et eksempel på returnering af CREATE_TABLE begivenhedstype i brødkrummestil:

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';

Resultat:

+--------------------------------------------------------------------------------------------------+
| Result                                                                                           |
|--------------------------------------------------------------------------------------------------|
| DDL_EVENTS > DDL_DATABASE_LEVEL_EVENTS > DDL_TABLE_VIEW_EVENTS > DDL_TABLE_EVENTS > CREATE_TABLE |
+--------------------------------------------------------------------------------------------------+

  1. En guide til MySQL Galera Cluster Streaming Replikering:Første del

  2. Lær hvordan du bruger flere funktioner i MySQL og MariaDB - Del 2

  3. er der en group_concat funktion i ms-access?

  4. MySQL - Valg af en kolonne, der ikke er i Grupper efter