2008-09-18 23 views

Trả lời

6

Sử dụng sp_settriggerorder. Bạn có thể chỉ định kích hoạt đầu tiên và cuối cùng để kích hoạt tùy thuộc vào thao tác.

sp_settriggerorder on MSDN

Từ liên kết ở trên:
A. Thiết lập trật tự bắn cho một cò DML
Ví dụ sau đây xác định rằng kích hoạt uSalesOrderHeader được kích hoạt đầu tiên để bắn sau khi câu lệnh UPDATE được xảy ra trên Bảng Sales.SalesOrderHeader.

 
USE AdventureWorks; 
GO 
sp_settriggerorder 
    @triggername= 'Sales.uSalesOrderHeader', 
    @order='First', 
    @stmttype = 'UPDATE'; 

B. Thiết lập trật tự bắn cho một kích hoạt DDL
Ví dụ sau đây xác định rằng kích hoạt ddlDatabaseTriggerLog được kích hoạt đầu tiên để bắn sau khi một sự kiện ALTER_TABLE xảy ra trong cơ sở dữ liệu AdventureWorks.

 
USE AdventureWorks; 
GO 
sp_settriggerorder 
    @triggername= 'ddlDatabaseTriggerLog', 
    @order='First', 
    @stmttype = 'ALTER_TABLE', 
    @namespace = 'DATABASE'; 
1

Bạn có thể sử dụng sp_settriggerorder để xác định thứ tự của từng trình kích hoạt trên bảng.

Tuy nhiên, tôi cho rằng bạn sẽ tốt hơn khi có một trình kích hoạt duy nhất thực hiện nhiều việc. Đây là đặc biệt là vì vậy nếu thứ tự quan trọng, vì tầm quan trọng đó sẽ không rõ ràng nếu bạn có nhiều trình kích hoạt. Hãy tưởng tượng ai đó đang cố gắng hỗ trợ cơ sở dữ liệu hàng tháng/năm xuống theo dõi. Tất nhiên có khả năng là trường hợp bạn cần phải có nhiều bộ kích hoạt hoặc nó thực sự là thiết kế tốt hơn, nhưng tôi sẽ bắt đầu giả sử bạn nên có một và làm việc từ đó.

0

Nhớ lại nếu bạn thay đổi thứ tự kích hoạt, người khác có thể đến sau và sắp xếp lại. Và bạn sẽ ghi lại thứ tự kích hoạt nên ở đâu để một nhà phát triển bảo trì không biết làm rối tung trật tự hoặc mọi thứ sẽ phá vỡ? Nếu hai nhiệm vụ kích hoạt chắc chắn phải được thực hiện theo một thứ tự cụ thể, thì tuyến đường an toàn duy nhất là đặt chúng trong cùng một kích hoạt.

Các vấn đề liên quan