sql >> Database >  >> RDS >> Sqlserver

2 manieren om een ​​lijst met triggers in een SQL Server-database te retourneren met behulp van T-SQL

Als u uw SQL Server-databases liever beheert door T-SQL-query's uit te voeren in plaats van de GUI te gebruiken, zijn hier twee opties om alle triggers in de huidige database weer te geven.

Optie 1 – De sys.triggers Catalogusweergave

U kunt de sys.triggers . gebruiken systeemcatalogusweergave om een ​​lijst van alle triggers in een database te krijgen.

USE Test;
SELECT 
  name,
  OBJECT_NAME(parent_id) AS parent,
  type,
  type_desc
FROM sys.triggers;

Resultaat:

+-------------------+----------+--------+-------------+
| name              | parent   | type   | type_desc   |
|-------------------+----------+--------+-------------|
| t1_insert_trigger | t1       | TR     | SQL_TRIGGER |
| t6ins             | t6       | TR     | SQL_TRIGGER |
+-------------------+----------+--------+-------------+

Deze weergave retourneert alle triggers met een type TR (SQL DML-trigger) of TA (Assembly (CLR) DML-trigger). Het retourneert zowel DML-triggernamen als DDL-triggernamen (in tegenstelling tot de volgende optie, die alleen DML-triggers retourneert).

Optie 2 – De sys.objects Catalogusweergave

U kunt ook de sys.objects . gebruiken systeemcatalogusweergave om een ​​lijst met triggers te krijgen.

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');

Resultaat:

+----------+-------------------+----------+--------+-------------+
| schema   | name              | parent   | type   | type_desc   |
|----------+-------------------+----------+--------+-------------|
| dbo      | t1_insert_trigger | t1       | TR     | SQL_TRIGGER |
| dbo      | t6ins             | t6       | TR     | SQL_TRIGGER |
+----------+-------------------+----------+--------+-------------+

Merk op dat sys.objects geeft alleen DML-triggers weer en geen DDL-triggers.

Dit komt omdat sys.objects retourneert alleen objecten met schemabereik. DML-triggernamen vallen binnen het schema, maar DDL-triggernamen vallen binnen het bereik van de bovenliggende entiteit. Als u DDL-triggers moet retourneren, gebruikt u sys.triggers .


  1. Tips voor het opslaan van uw MariaDB-back-ups in de cloud

  2. SQL Server datetime LIKE selecteren?

  3. Hoe voeg je xml-codering <?xml version=1.0 encoding=UTF-8?> toe aan xml-uitvoer in SQL Server

  4. Hoe installeer ik Postgis op een Keg-installatie van [email protected] met Homebrew?