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
.