Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

2 начина за връщане на списък с тригери в база данни на SQL Server с помощта на T-SQL

Ако предпочитате да администрирате вашите бази данни на 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 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Доставчикът на OLE DB „Microsoft.Jet.OLEDB.4.0“ не може да се използва за разпределени заявки

  2. Заявка за изброяване на броя на записи във всяка таблица в база данни

  3. Как да върна няколко стойности в една колона (T-SQL)?

  4. Как да изберете вложен JSON в SQL Server с OPENJSON

  5. Намерете индекса на последното появяване на подниз с помощта на T-SQL