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
.