Jeśli wolisz administrować bazami danych SQL Server, uruchamiając zapytania T-SQL, zamiast korzystać z GUI, oto dwie opcje wyświetlania listy wszystkich wyzwalaczy w bieżącej bazie danych.
Opcja 1 – Widok katalogu sys.triggers
Możesz użyć sys.triggers
widok katalogu systemowego, aby uzyskać listę wszystkich wyzwalaczy w bazie danych.
USE Test; SELECT name, OBJECT_NAME(parent_id) AS parent, type, type_desc FROM sys.triggers;
Wynik:
+-------------------+----------+--------+-------------+ | name | parent | type | type_desc | |-------------------+----------+--------+-------------| | t1_insert_trigger | t1 | TR | SQL_TRIGGER | | t6ins | t6 | TR | SQL_TRIGGER | +-------------------+----------+--------+-------------+
Ten widok zwraca wszystkie wyzwalacze z typem TR (wyzwalacz SQL DML) lub TA (wyzwalacz DML zespołu (CLR)). Zwraca zarówno nazwy wyzwalaczy DML, jak i nazwy wyzwalaczy DDL (w przeciwieństwie do następnej opcji, która zwraca tylko wyzwalacze DML).
Opcja 2 – Widok katalogu sys.objects
Możesz także użyć sys.objects
widok katalogu systemowego, aby uzyskać listę wyzwalaczy.
USE Test; SELECT SCHEMA_NAME(schema_id) AS [schema], name, OBJECT_NAME(parent_object_id) AS parent, type, type_desc FROM sys.objects WHERE type IN ('TR', 'TA');
Wynik:
+----------+-------------------+----------+--------+-------------+ | schema | name | parent | type | type_desc | |----------+-------------------+----------+--------+-------------| | dbo | t1_insert_trigger | t1 | TR | SQL_TRIGGER | | dbo | t6ins | t6 | TR | SQL_TRIGGER | +----------+-------------------+----------+--------+-------------+
Zauważ, że sys.objects
wyświetla tylko wyzwalacze DML, a nie wyzwalacze DDL.
Dzieje się tak, ponieważ sys.objects
zwraca tylko obiekty o zakresie schematu. Nazwy wyzwalaczy DML są objęte zakresem schematu, ale nazwy wyzwalaczy DDL są objęte zakresem jednostki nadrzędnej. Jeśli chcesz zwrócić wyzwalacze DDL, użyj sys.triggers
.