Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

2 cách trả về danh sách kích hoạt trong cơ sở dữ liệu máy chủ SQL bằng T-SQL

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 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để thoát chuỗi trong SQL Server bằng PHP?

  2. Lập lịch chạy quy trình được lưu trữ trên máy chủ SQL

  3. Danh sách các hàm ngày và giờ trong SQL Server (T-SQL)

  4. SQL Server:Rò rỉ mức cách ly trên các kết nối được gộp chung

  5. Thay đổi mật khẩu cho đăng nhập máy chủ SQL