테이블에 대해 트리거 SQL 서버 사용 안함


128

아래와 같이 하나의 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'.

답변:


242

대신 다음 명령을 사용하십시오.

ALTER TABLE table_name DISABLE TRIGGER tr_name

ALTER TABLE table_name ENABLE TRIGGER tr_name

3
이 버전에 적합한 SqlServer 버전은 무엇입니까? 나를 위해 작동하지 않는 반면,이 DISABLE TRIGGER [dbo].[tr_name] on [schema].[table_name]
매스로 우는

1
당신의 대답은 맞습니다. 그러나 실제로 @pang 문은 간단한 대신 수정이 필요하지 않습니다 ;! 사용하는 것을 선호합니다 ENABLE Trigger. 2008 년부터 모든 SQL Server에 적용됩니다.
ABS

데이터베이스에서 모든 테이블을 수행해야하는 경우 다음을 사용하십시오. EXECUTE sp_msforeachtable "ALTER TABLE? disable trigger ALL"go
John Dyer

71

;SQL DISABLE 에서 키워드가 아니기 때문에 이전 줄은로 끝나야 합니다 . 예를 들면 다음과 같습니다.

BEGIN
;
DISABLE TRIGGER ...

10
나는이 대답을 훨씬 선호합니다. 문제를 해결하고 해결 방법 대신 솔루션을 제공합니다. 해결 방법은 그 자리에 있지만 맹목적으로 해결 방법을 맹목적으로 따르는 대신 오류가 발생한 이유를 이해하는 것이 중요합니다.
Bpainter

13

Mark가 언급했듯이 이전 문장은 세미콜론으로 끝나야합니다. 따라서 다음을 사용할 수 있습니다.

; DISABLE TRIGGER dbo.tr_name ON dbo.table_name

2

새 행에서 TRIGGER ENABLE TRIGGER 또는 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

0

다음은 트리거를 활성화 또는 비활성화하는 동적 스크립트입니다.

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

소스에서 직접 ENABLE TRIGGER를 실행하려면 다음을 수행하십시오.

우리는 다음과 같이 쓸 수 없습니다 :

Conn.Execute "ENABLE TRIGGER trigger_name ON table_name"

대신 다음과 같이 쓸 수 있습니다.

Conn.Execute "ALTER TABLE table_name DISABLE TRIGGER trigger_name"

-1

아래는 가장 간단한 방법입니다

코드를 사용해보십시오

ALTER TRIGGER trigger_name DISABLE

그게 다야 :)


SQL Server> 2008 R2에서 작동하지 않으며 MS SQL Server에 대한 질문
kuklei
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.