2010-08-30 48 views

Trả lời

13

Nếu bạn thực sự phải tạo cò bị vô hiệu hóa sau đó tạo ra và vô hiệu hóa nó trong một giao dịch:

begin tran 
go 
create trigger t_i on t after insert as begin /* trigger body */ end 
go 
disable trigger t_i on t 
commit 
go 

Các GO đang có vì CREATE TRIGGER phải là tuyên bố đầu tiên trong một hàng loạt, nhưng tùy thuộc vào cách bạn triển khai mã của bạn, bạn có thể làm cho nó trông hơi hơn một chút.

+2

+1 để thực sự trả lời câu hỏi ... – gbn

0

Trong studio quản lý Mở rộng thư mục Kích hoạt trong bảng và Nhấp chuột phải vào Kích hoạt và Tắt.

DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL } 
ON { object_name | DATABASE | ALL SERVER } [ ; ] 

MSDN:DISABLE TRIGGER (Transact-SQL)

ENABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL } 
ON { object_name | DATABASE | ALL SERVER } [ ; ] 

MSDN:ENABLE TRIGGER (Transact-SQL)

sql-server-disable-all-triggers-on-a-database-disable-all-triggers-on-all-servers

+0

Không, tôi muốn kích hoạt bị vô hiệu hóa ở giai đoạn sáng tạo. – regisbsb

0

T-SQL cung cấp một tuyên bố TRIGGER DISABLE mà hoàn thành được điều tương tự. Bạn có thể tìm thấy những thông tin chi tiết ở đây: DISABLE TRIGGER SYNTAX

+0

Không, tôi muốn có một kích hoạt bị vô hiệu hóa ở giai đoạn sáng tạo. – regisbsb

0

Con đường tôi đã làm điều đó là để Exec cả tạo và vô hiệu hóa như:

EXEC('CREATE TRIGGER trigger_on_myTable ON myTable <Trigger body> '); 

EXEC('DISABLE TRIGGER trigger_on_myTable ON myTable'); 

Điều này cho phép tôi để tạo ra và vô hiệu hóa trong cùng một kịch bản mà không có bất kỳ của GO.

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