[sql-server] 테이블에 대해 트리거 SQL 서버 사용 안함

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



답변

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

ALTER TABLE table_name DISABLE TRIGGER tr_name

ALTER TABLE table_name ENABLE TRIGGER tr_name


답변

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

BEGIN
;
DISABLE TRIGGER ...


답변

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

; DISABLE TRIGGER dbo.tr_name ON dbo.table_name


답변

새 행에서 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


답변

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

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


답변

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

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

Conn.Execute "ENABLE TRIGGER trigger_name ON table_name"

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

Conn.Execute "ALTER TABLE table_name DISABLE TRIGGER trigger_name"


답변

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

코드를 사용해보십시오

ALTER TRIGGER trigger_name DISABLE

그게 다야 🙂