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
.