Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kueri yang Mengembalikan Daftar Hierarki Jenis Peristiwa Pemicu di SQL Server

Di SQL Server, Anda dapat menggunakan kueri T-SQL berikut untuk mengembalikan daftar hierarkis jenis peristiwa pemicu.

Contoh-contoh ini menanyakan sys.trigger_event_types view, yang mengembalikan baris untuk setiap peristiwa atau grup peristiwa tempat pemicu dapat diaktifkan.

Contoh 1 – Kembalikan Semua Baris

Kueri ini mengembalikan semua baris di sys.trigger_event_types lihat.

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;

Kueri tersebut mengembalikan 284 baris di lingkungan SQL Server 2017 saya dan 291 baris di lingkungan SQL Server 2019 saya.

Contoh 2 – Mengembalikan Jenis Peristiwa Tunggal

Anda dapat mengubah kueri sebelumnya sehingga menghasilkan jenis peristiwa tertentu, yang tercantum dalam gaya breadcrumb.

Berikut adalah contoh mengembalikan CREATE_TABLE jenis acara dalam gaya remah roti:

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

Hasil:

+--------------------------------------------------------------------------------------------------+
| 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. Log Transaksi SQL Server, Bagian 3:Dasar-dasar Pencatatan

  2. Jalankan skrip SQL besar (dengan perintah GO)

  3. Bagaimana cara menentukan nomor port dalam string koneksi SQL Server?

  4. Menambahkan petunjuk kueri saat memanggil Fungsi Bernilai Tabel

  5. Bagaimana Anda membuat cadangan dan memulihkan database sebagai salinan di server yang sama?