IT정보공유/DB

MSSQL Procedure 에서 Trigger 사용, 사용안함 설정 방법

알지오™ 2019. 11. 27.

원격지에 있는 데이터베이스와 로컬에 설치된 데이터베이스 사이에서 특정 테이블의 데이터를
동기화하기 위해서 MSSQL Trigger 기능을 사용해 보고 있습니다.

 

MSSQL Procedure 안에서 명령어를 실행하는 방법

 

그런데 트리거를 이용해 동기화를 하다보니 동기화가 되는 순간에 다시 트리거가 동작하게 되어
이중삼중으로 핑퐁치게되버리는 현상이 생겼습니다.

그래서 동기화 작업을 수행할 때는 테이블에 걸려있는 트리거를 멈춰두고 동기화작업 완료 후
다시 트리거를 활성화 시켜줘야 하더라고요.

 

MSSQL 트리거 활성화/비활성화 명령어
--트리거 활성화 명령어 (trigger off)
ENABLE TRIGGER TRG_POINTDEF  ON DBTest.dbo.POINTDEF;


--트리거 비활성화 명령어 (trigger on)
DISABLE TRIGGER TRG_POINTDEF  ON DBTest.dbo.POINTDEF;

그런데 이 명령어는 MSSQL 프로시져 안에서 그대로 사용할 순 없어요.
저장프로시져라는 특성상 별도의 명령어인 exec()를 통해 실행해줘야합니다.

아래와 같이 exec() 명령어를 통해 프로시져안에서도 트리거의 사용과 중지 명령을 수행할 수 있었습니다.

 

프로시져안에서 트리거 사용/미사용 명령어 사용방법
--트리거 실행 명령어
exec('ENABLE TRIGGER TRG_POINTDEF  ON DBTest.dbo.POINTDEF')


--트리거 중지 명령어
exec('DISABLE TRIGGER TRG_POINTDEF  ON DBTest.dbo.POINTDEF')

 

MSSQL 트리거 참고

 

 

MSSQL Trigger, 트리거 사용방법을 알아보자

오늘은 MSSQL Database의 트리거 사용방법을 알아보도록 하겠습니다. 트리거는 무엇에 쓰는 물건인고?? 테이블에 Insert, Update, Delete 등의 데이터 변화가 생길경우 이 이벤트를 감지해 주는 역할을 하는것이..

bigenergy.tistory.com

 

댓글

💲 추천 글