Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zapytanie, które zwraca hierarchiczną listę typów zdarzeń wyzwalających w SQL Server

W SQL Server możesz użyć następujących zapytań T-SQL, aby zwrócić hierarchiczną listę typów zdarzeń wyzwalających.

Te przykłady wysyłają zapytanie do sys.trigger_event_types widok, który zwraca wiersz dla każdego zdarzenia lub grupy zdarzeń, na które może zostać uruchomiony wyzwalacz.

Przykład 1 – Zwróć wszystkie wiersze

To zapytanie zwraca wszystkie wiersze w sys.trigger_event_types widok.

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;

To zapytanie zwraca 284 wiersze w moim środowisku SQL Server 2017 i 291 wierszy w moim środowisku SQL Server 2019.

Przykład 2 – Zwróć pojedynczy typ zdarzenia

Możesz zmodyfikować poprzednie zapytanie, aby zwracało określony typ zdarzenia, wyszczególniony w stylu menu nawigacyjnego.

Oto przykład zwracania CREATE_TABLE typ wydarzenia w stylu breadcrumb:

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

Wynik:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dołączanie do rekordu daty MAX w grupie

  2. Zmień nazwę tabeli w SQL Server (T-SQL)

  3. 4 typy danych do wycofania w SQL Server

  4. Poznaj bazę danych przywracania SQL Server z odzyskiwaniem i bez opcji odzyskiwania

  5. Nawigacja w dziennikach błędów serwera SQL