Database/MS-SQL | Posted by 아키텍처 2012. 4. 24. 18:17

TRIGGER (트리거) 란?

 
 

TRIGGER (트리거) 란?



트리거란 무엇일까요?


사전에서 트리거를 찾아보면 (총의) 방아쇠, (반응/사건을 유발한) 계기 [도화선], (폭탄의) 폭파 장치라고 나와 있는데요.


간단하게 트리거는 해당 테이블이나 뷰에 대해 어떤 액션이 가해 졌을때 내가 원하는 액션을 자동으로 처리하는 프로세스라고


말할 수 있습니다. 실무에서는 많이 사용하지는 않지만, 꼭 필요한 요소이고, 저같은 경우에는 로그데이터를 남길때 이를 사용합니다.


예를 들면, A라는 테이블에 INSERT,UPDATE,DELETE 같은 액션이 발생할 경우 로그테이블에 해당로그를 저장하는 것이죠.


아주 유용합니다. 하지만 트리거를 사용할때 주의할 점은 이넘은 눈에 보이지 않게 자동으로 처리되기 때문에, 예전에 만들어 놓았던 


트리거를 깜빡하고, 나도 모르는 사이에 실수를 범할 수 있다는 점입니다. 편리하자고 만들었는데, 더 불편해질수도 있죠 ㅎㅎ




트리거의 종류는 어떤것들이 있을까요?


트리거는 크게 두가지로 나누어 볼 수 있습니다. 

 (요기에서는 DML 트리거만 다루도록 하겠습니다.)


1. AFTER : 이벤트 이후 작동되고, 테이블에서만 사용가능합니다.

2. BEFORE : 이벤트 이전에 작동되고, 테이블, 뷰에서 사용가능합니다.


A라는 테이블에 Insert 가 발생할경우 


1. AFTER의 경우 

-> 트랜젝션이 완료되기 바로 전에 트리거가 처리되고, 트랜젝션이 완료됩니다.


2. BEFORE의 경우

-> 해당의 경우는 Instead of 라고 명명하고, 사용하는데 의미 그대로 [대신에] 라고 보시면 됩니다. 제가 트리거에 Insert 가 일어날때 Update를 해라 라고 지정한다면, A테이블에 Insert 가 발생하자마자 Insert는 처리하지 않고, Update만 처리하고 종료되는 것이죠. 후훗 

잼나지 않나요?

Posted by 김준홍 (http://www.Juuun.com)