web-dev-qa-db-ja.com

テーブルのトリガーSQLサーバーの有効化を無効にする

以下のような1つのprocを作成したいのですが、構文にエラーがあります。誰かが問題を指摘できますか?

Create PROCEDURE [dbo].[my_proc] AS

BEGIN

DISABLE TRIGGER dbo.tr_name ON dbo.table_name

-- some update statement

ENABLE TRIGGER dbo.tr_name  ON dbo.table_name

END

** Error Message : Incorrect syntax near 'ENABLE'.
121
pang

代わりに次のコマンドを使用してください。

ALTER TABLE table_name DISABLE TRIGGER tr_name

ALTER TABLE table_name ENABLE TRIGGER tr_name
231
Wael Dalloul

SQLではDISABLEキーワードではない であるため、前の行は;で終わる必要があります。例えば:

BEGIN
;
DISABLE TRIGGER ...
66
Mark Kane

マークが述べたように、前のステートメントはセミコロンで終了する必要があります。以下を使用できます。

; DISABLE TRIGGER dbo.tr_name ON dbo.table_name
12
kaptan

新しい行のENABLE TRIGGER OR DISABLE TRIGGERの後にGOを書き込みます。例:

DISABLE TRIGGER dbo.tr_name ON dbo.table_name

GO
-- some update statement

ENABLE TRIGGER dbo.tr_name  ON dbo.table_name

GO
2
Andrea

以下は、トリガーを有効または無効にするダイナミックスクリプトです。

select 'alter table '+ (select Schema_name(schema_id) from sys.objects o 
where o.object_id = parent_id) + '.'+object_name(parent_id) + ' ENABLE TRIGGER '+
Name as EnableScript,*
from sys.triggers t 
where is_disabled = 1
0
Shahab Naseer