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

Brug sys.trigger_event_types til at vise triggerhændelsestyper i SQL Server

I SQL Server kan du bruge sys.trigger_event_types for at returnere alle hændelser eller hændelsesgrupper, som en trigger kan udløses på.

Eksempel 1 – En lille prøve

Her bruger jeg TOP() klausul for at returnere de første ti rækker fra visningen.

VÆLG TOP(10) * FRA sys.trigger_event_types;

Resultat:

+--------+--------------------+-----------+| type | typenavn | parent_type ||--------+--------------------+--------------------|| 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 | OPDATERING_STATISTIK | 10021 || 29 | DROP_STATISTICS | 10021 || 34 | CREATE_SYNONYM | 10022 |+--------+--------------------+---------+ 

Hvis jeg vælger alle rækker, får jeg 284, når jeg bruger SQL Server 2017 og 291 i SQL Server 2019.

Eksempel 2 – Få fat i forælderen

Hvis du ser nøje på resultaterne af sys.trigger_event_types , vil du se, at DDL-udløserhændelser er hierarkiske.

Her er et eksempel, der viser hierarkiet af CREATE_TABLE udløse hændelse.

WITH event_types(Type, Type_Name, Parent_Type, Level) AS ( SELECT type, type_name, parent_type, 1 AS level FROM sys.trigger_event_types WHERE type_name ='CREATE_TABLE' UNION ALLE VÆLG tet.type, tet.type_parent_type, tet. , et.level + 1 AS niveau FRA hændelsestyper AS et JOIN sys.trigger_event_types AS tet ON et.parent_type =tet.type)SELECT Type, Type_name, Parent_TypeFROM hændelsestyperORDER BY level DESC;

Resultat:

+--------+----------------------------+-------- ------+| Skriv | Type_navn | Forældretype ||--------+--------------------------------+---------- -----|| 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 |+--------+----------------------------+---------------- -----+

Vi kan se den DDL_EVENTS er øverst i hierarkiet efterfulgt af DDL_DATABASE_LEVEL_EVENTS osv., indtil vi når CREATE_TABLE .

En anden måde at visualisere det på er sådan her:

DDL_EVENTS> DDL_DATABASE_LEVEL_EVENTS> DDL_TABLE_VIEW_EVENTS> DDL_TABLE_EVENTS> CREATE_TABLE

Du kan erstatte CREATE_TABLE i forespørgslen med enhver anden hændelsestype for at se dens hierarki.

Se også Forespørgsel, der returnerer en hierarkisk liste over triggerhændelsestyper i SQL Server for at returnere en hierarkisk liste over triggerhændelsestyper.


  1. Sådan opretter du forbindelse til MySQL ved hjælp af Perl

  2. SQL Server 2016:Tilgængelighedsgruppeforbedringer

  3. Hvordan opretter man en skrivebeskyttet MySQL-bruger?

  4. PostgreSQL vs. MySQL