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 .