Se você preferir administrar seus bancos de dados SQL Server executando consultas T-SQL, em vez de usar a GUI, aqui estão duas opções para listar todos os gatilhos no banco de dados atual.
Opção 1 – A Exibição do Catálogo sys.triggers
Você pode usar os
sys.triggers
visualização do catálogo do sistema para obter uma lista de todos os gatilhos em um banco de dados. USE Test; SELECT name, OBJECT_NAME(parent_id) AS parent, type, type_desc FROM sys.triggers;
Resultado:
+-------------------+----------+--------+-------------+ | name | parent | type | type_desc | |-------------------+----------+--------+-------------| | t1_insert_trigger | t1 | TR | SQL_TRIGGER | | t6ins | t6 | TR | SQL_TRIGGER | +-------------------+----------+--------+-------------+
Essa exibição retorna todos os gatilhos com um tipo de TR (gatilho SQL DML) ou TA (gatilho DML Assembly (CLR)). Ele retorna nomes de gatilhos DML e nomes de gatilhos DDL (diferentemente da próxima opção, que retorna apenas gatilhos DML).
Opção 2 – A Exibição do Catálogo sys.objects
Você também pode usar o
sys.objects
visualização do catálogo do sistema para obter uma lista de acionadores. 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');
Resultado:
+----------+-------------------+----------+--------+-------------+ | schema | name | parent | type | type_desc | |----------+-------------------+----------+--------+-------------| | dbo | t1_insert_trigger | t1 | TR | SQL_TRIGGER | | dbo | t6ins | t6 | TR | SQL_TRIGGER | +----------+-------------------+----------+--------+-------------+
Observe que
sys.objects
lista apenas acionadores DML e não acionadores DDL. Isso ocorre porque
sys.objects
retorna apenas objetos com escopo de esquema. Os nomes de gatilho DML têm escopo de esquema, mas os nomes de gatilho DDL têm escopo definido pela entidade pai. Se você precisar retornar gatilhos DDL, use sys.triggers
.