Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Използвайте sys.trigger_event_types, за да изброите типовете тригерни събития в SQL Server

В SQL Server можете да използвате sys.trigger_event_types за да върне всички събития или групи събития, за които може да се задейства тригер.

Пример 1 – Малка извадка

Тук използвам TOP() клауза за връщане на първите десет реда от изгледа.

SELECT TOP(10) * FROM sys.trigger_event_types;

Резултат:

+--------+-------------------+--------------+| тип | тип_име | тип_родител ||--------+------------------+--------------|| 21 | CREATE_TABLE | 10018 || 22 | ALTER_TABLE | 10018 || 23 | DROP_TABLE | 10018 || 24 | CREATE_INDEX | 10020 || 25 | ALTER_INDEX | 10020 || 26 | DROP_INDEX | 10020 || 27 | CREATE_STATISTICS | 10021 || 28 | АКТУАЛИЗИРАНИ_СТАТИСТИКИ | 10021 || 29 | DROP_STATISTICS | 10021 || 34 | CREATE_SYNONYM | 10022 |+--------+------------------+--------------+ 

Ако избера всички редове, получавам 284, когато използвам SQL Server 2017 и 291 в SQL Server 2019.

Пример 2 – Получаване на родител

Ако погледнете отблизо резултатите от sys.trigger_event_types , ще видите, че DDL тригерните събития са йерархични.

Ето пример, който показва йерархията на CREATE_TABLE задействащо събитие.

WITH event_types(Type, Type_Name, Parent_Type, Level) AS ( SELECT type, type_name, parent_type, 1 AS ниво FROM sys.trigger_event_types WHERE type_name ='CREATE_TABLE' UNION ALL SELECT tet.type, tet.type_rent_name, , et.level + 1 AS ниво FROM event_types AS et JOIN sys.trigger_event_types AS tet ON et.parent_type =tet.type)SELECT Type, Type_name, Parent_TypeFROM event_typesORDER BY level DESC;

Резултат:

+--------+--------------------------+-------- ------+| Тип | Тип_име | Тип_родител ||-------+------------------------------+---------- -----|| 10001 | DDL_EVENTS | NULL || 10016 | DDL_DATABASE_LEVEL_EVENTS | 10001 || 10017 | DDL_TABLE_VIEW_EVENTS | 10016 || 10018 | DDL_TABLE_EVENTS | 10017 || 21 | CREATE_TABLE | 10018 |+--------+---------------------------+---------- -----+

Можем да видим, че DDL_EVENTS е в горната част на йерархията, следван от DDL_DATABASE_LEVEL_EVENTS и т.н., докато стигнем до CREATE_TABLE .

Друг начин да го визуализирате е така:

DDL_EVENTS> DDL_DATABASE_LEVEL_EVENTS> DDL_TABLE_VIEW_EVENTS> DDL_TABLE_EVENTS> CREATE_TABLE

Можете да замените CREATE_TABLE в заявката с всеки друг тип събитие, за да видите йерархията му.

Вижте също Заявка, която връща йерархичен списък с типове задействащи събития в SQL Server, за да върнете йерархичен списък с типове задействащи събития.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да генерирам диапазон от числа между две числа?

  2. Месеци между две дати

  3. TSQL - Как да използвам GO вътре в блок BEGIN .. END?

  4. Знайте как да възстановите изтрита таблица в SQL Server 2012 без архивиране

  5. Моментни снимки на базата данни на SQL Server -1