[DB] 트리거(Trigger)
- IT/DB
- 2020. 5. 22.
트리거(Trigger)란 무엇인가?
오늘은 트리거(Trigger)에 대해 알아보도록 하겠습니다.
저는 학교 DB 수업시간 때 다른 개체보다도 트리거에 대한 개념을 잡기가 조금 어려웠습니다. 문자그대로 '어떤 작업이 발생하면 실행하는 코드' 정도로만 외웠던 기억이 나네요..ㅎ
일단 트리거란 테이블에 부착되어서 INSERT나 UPDATE, DELETE 등의 작업이 발생하면 실행되는 코드를 말합니다.
이 트리거를 언제 사용하면 좋을까요?
개념을 정확히 이해하기 위해 적절한 예를 들어보겠습니다.
예를 들어 '오꽈'라는 학생이 학교에서 자퇴하는 경우를 생각해봅시다. 학생들의 정보가 저장되어있는 학생 테이블이 있다면 학생 테이블에서 오꽈의 정보를 삭제하면 됩니다. 그런데 나중에 자퇴한 오꽈가 학교에 찾아와서 자퇴하기 전에 이 학교에 다녔다는 것을 증명할 자료가 필요하다고 합니다. 하지만 학생 테이블엔 오꽈의 정보가 존재하지 않습니다(자퇴할 때 삭제했기 때문). 이 문제는 간단하게 오꽈 학생의 데이터를 삭제하기 전에 다른 곳에 복사해 놓으면 됩니다. 자퇴 테이블을 만들어 자퇴하는 학생이 있을 때마다 이 테이블에 복사를 해두면 되는 일입니다. 그런데 매번 이런 일이 있을 때마다 데이터를 지우기 전에 다른 곳에 복사해 놓는 작업을 할 경우 테이블을 관리하는 관리자가 깜빡 잊을 수도 있기 때문에 이 또한 충분히 믿을 수 없습니다.
그래서 학생 테이블에서 삭제 작업이 일어날 경우 삭제되기 전 미리 다른 곳에 삭제될 데이터를 자동으로 저장해주는 기능이 있다면 그런 실수를 하지 않게 될 것입니다. 즉, 트리거를 사용한다면 사용자는 더 이상 행 데이터를 삭제하기 전 다른 곳에 저장을 해야 하는 업무적 부담을 덜뿐만 아니라 삭제된 모든 데이터는 완벽하게 별도의 테이블에 저장할 수 있습니다.
'IT > DB' 카테고리의 다른 글
[DB] 악성 쿼리문이란? (0) | 2020.05.23 |
---|---|
[DB] CHAR, VARCHAR vs NCHAR, NVARCHAR (0) | 2020.05.23 |
[DB] 뷰(View) (0) | 2020.05.22 |