Ако предпочитате да администрирате вашите бази данни на SQL Server чрез изпълнение на T-SQL заявки, вместо да използвате GUI, ето две опции за изброяване на всички тригери в текущата база данни.
Опция 1 – Изгледът на каталога sys.triggers
Можете да използвате sys.triggers
изглед на системния каталог, за да получите списък на всички тригери в база данни.
USE Test; SELECT name, OBJECT_NAME(parent_id) AS parent, type, type_desc FROM sys.triggers;
Резултат:
+-------------------+----------+--------+-------------+ | name | parent | type | type_desc | |-------------------+----------+--------+-------------| | t1_insert_trigger | t1 | TR | SQL_TRIGGER | | t6ins | t6 | TR | SQL_TRIGGER | +-------------------+----------+--------+-------------+
Този изглед връща всички задействания с тип TR (SQL DML тригер) или TA (Сглобяване (CLR) DML тригер). Връща както DML имена на тригери, така и имена на DDL тригери (за разлика от следващата опция, която връща само DML тригери).
Опция 2 – Изгледът на каталога sys.objects
Можете също да използвате sys.objects
изглед на системния каталог, за да получите списък с тригери.
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');
Резултат:
+----------+-------------------+----------+--------+-------------+ | schema | name | parent | type | type_desc | |----------+-------------------+----------+--------+-------------| | dbo | t1_insert_trigger | t1 | TR | SQL_TRIGGER | | dbo | t6ins | t6 | TR | SQL_TRIGGER | +----------+-------------------+----------+--------+-------------+
Обърнете внимание, че sys.objects
изброява само DML тригери, но не и DDL тригери.
Това е така, защото sys.objects
връща само обекти с обхват на схема. Имената на задействания на DML са с обхват на схема, но имената на DDL тригери са обхватени от родителския обект. Ако трябва да върнете DDL тригери, използвайте sys.triggers
.