Nếu bạn muốn quản lý cơ sở dữ liệu SQL Server của mình bằng cách chạy các truy vấn T-SQL, thay vì sử dụng GUI, đây là hai tùy chọn để liệt kê tất cả các trình kích hoạt trong cơ sở dữ liệu hiện tại.
Tùy chọn 1 - Chế độ xem danh mục sys.triggers
Bạn có thể sử dụng sys.triggers
xem danh mục hệ thống để nhận danh sách tất cả các trình kích hoạt trong cơ sở dữ liệu.
USE Test; SELECT name, OBJECT_NAME(parent_id) AS parent, type, type_desc FROM sys.triggers;
Kết quả:
+-------------------+----------+--------+-------------+ | name | parent | type | type_desc | |-------------------+----------+--------+-------------| | t1_insert_trigger | t1 | TR | SQL_TRIGGER | | t6ins | t6 | TR | SQL_TRIGGER | +-------------------+----------+--------+-------------+
Dạng xem này trả về tất cả các trình kích hoạt có loại TR (SQL DML trigger) hoặc TA (Assembly (CLR) DML trigger). Nó trả về cả tên trình kích hoạt DML và tên trình kích hoạt DDL (không giống như tùy chọn tiếp theo, chỉ trả về trình kích hoạt DML).
Tùy chọn 2 - Chế độ xem danh mục sys.objects
Bạn cũng có thể sử dụng sys.objects
xem danh mục hệ thống để nhận danh sách các trình kích hoạt.
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');
Kết quả:
+----------+-------------------+----------+--------+-------------+ | schema | name | parent | type | type_desc | |----------+-------------------+----------+--------+-------------| | dbo | t1_insert_trigger | t1 | TR | SQL_TRIGGER | | dbo | t6ins | t6 | TR | SQL_TRIGGER | +----------+-------------------+----------+--------+-------------+
Lưu ý rằng sys.objects
chỉ liệt kê các trình kích hoạt DML chứ không phải các trình kích hoạt DDL.
Điều này là do sys.objects
chỉ trả về các đối tượng trong phạm vi lược đồ. Tên trình kích hoạt DML có phạm vi lược đồ nhưng tên trình kích hoạt DDL được thực thể mẹ đặt trong phạm vi. Nếu bạn cần trả lại trình kích hoạt DDL, hãy sử dụng sys.triggers
.