sql >> Database >  >> RDS >> Sqlserver

Query die een hiërarchische lijst van typen triggergebeurtenissen in SQL Server retourneert

In SQL Server kunt u de volgende T-SQL-query's gebruiken om een ​​hiërarchische lijst met typen triggergebeurtenissen te retourneren.

Deze voorbeelden vragen de sys.trigger_event_types weergave, die een rij retourneert voor elke gebeurtenis of gebeurtenisgroep waarop een trigger kan worden geactiveerd.

Voorbeeld 1 – Alle rijen retourneren

Deze query retourneert alle rijen in de sys.trigger_event_types bekijken.

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;

Die query retourneert 284 rijen in mijn SQL Server 2017-omgeving en 291 rijen in mijn SQL Server 2019-omgeving.

Voorbeeld 2 – Retourneer een enkel gebeurtenistype

U kunt de vorige zoekopdracht wijzigen zodat deze een specifiek gebeurtenistype retourneert, weergegeven in broodkruimelstijl.

Hier is een voorbeeld van het retourneren van de CREATE_TABLE gebeurtenistype in broodkruimelstijl:

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

Resultaat:

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

  1. Alleen toetsenbordnavigatie gebruiken in Word, Excel en PowerPoint (deel 2:dialoogvensters)

  2. Voorloop- en volgnullen toevoegen in SQL Server

  3. 5 manieren om een ​​SQL-script uit te voeren vanuit een bestand in SQLite

  4. Hoe maak je programmatisch een ODBC-gekoppelde tabel aan een SQL Server-weergave en bewerkbaar?