sql >> Database teknologi >  >> RDS >> Sqlserver

2 måder at returnere en liste over triggere i en SQL Server-database ved hjælp af T-SQL

Hvis du foretrækker at administrere dine SQL Server-databaser ved at køre T-SQL-forespørgsler, i stedet for at bruge GUI, er her to muligheder for at angive alle triggere i den aktuelle database.

Mulighed 1 – Sys.triggers Catalog View

Du kan bruge sys.triggers systemkatalogvisning for at få en liste over alle triggere i en database.

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

Resultat:

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

Denne visning returnerer alle triggere med en type TR (SQL DML trigger) eller TA (Assembly (CLR) DML trigger). Det returnerer både DML-triggernavne og DDL-triggernavne (i modsætning til den næste mulighed, som kun returnerer DML-triggere).

Mulighed 2 – Sys.objects-katalogvisningen

Du kan også bruge sys.objects systemkatalogvisning for at få en liste over udløsere.

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

Resultat:

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

Bemærk, at sys.objects viser kun DML-triggere og ikke DDL-triggere.

Dette er fordi sys.objects returnerer kun objekter med skemaomfang. DML-triggernavne er skemabaserede, men DDL-triggernavne er omfattet af den overordnede enhed. Hvis du skal returnere DDL-triggere, skal du bruge sys.triggers .


  1. Tjek for mislykket e-mail i SQL Server (T-SQL)

  2. 2 måder at liste tabellerne i en SQLite-database

  3. Materialiseret visning vs. tabeller:Hvad er fordelene?

  4. MariaDB JSON_VALUE() vs JSON_QUERY():Hvad er forskellen?