sql >> Databasteknik >  >> RDS >> Sqlserver

2 sätt att returnera en lista med triggers i en SQL Server-databas med T-SQL

Om du föredrar att administrera dina SQL Server-databaser genom att köra T-SQL-frågor, istället för att använda GUI, finns här två alternativ för att lista alla utlösare i den aktuella databasen.

Alternativ 1 – Sys.triggers Catalog View

Du kan använda sys.triggers systemkatalogvy för att få en lista över alla utlösare i en databas.

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 |
+-------------------+----------+--------+-------------+

Den här vyn returnerar alla utlösare med en typ av TR (SQL DML-trigger) eller TA (Assembly (CLR) DML-trigger). Det returnerar både DML-utlösarnamn och DDL-utlösarnamn (till skillnad från nästa alternativ, som bara returnerar DML-utlösare).

Alternativ 2 – Sys.objects-katalogvyn

Du kan också använda sys.objects systemkatalogvy för att få en lista över utlösare.

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 |
+----------+-------------------+----------+--------+-------------+

Observera att sys.objects listar endast DML-utlösare och inte DDL-utlösare.

Detta beror på att sys.objects returnerar endast objekt med schemaomfattning. DML-utlösarnamn är schema-omfattade men DDL-utlösarnamn omfångas av den överordnade enheten. Om du behöver returnera DDL-utlösare, använd sys.triggers .


  1. Proceduren förväntar sig parameter som inte tillhandahölls

  2. Prestandavärde för COMB-guider

  3. oracle autoincrement med sekvens och trigger fungerar inte korrekt

  4. PostgreSQL-träning för MySQLers