본문 바로가기

DB/__Oracle

트리거 생성시 고려해야되는 사항들.


1. 트리거는 프로시저나 Function과는 달리 컴파일 되지 않은 형태로 저장되어 있기 때문에 너무 긴 트리거는 성능을 저하

2. 행 트리거의 경우는 행마다 실행되므로 대규모의 테이블에서는  트리거의 실행에 엄청난 시간이 소요

3. 트리거를 너무 많이 만들면 트리거가 연쇄적으로 발생할 가능성이 있으므로 위험

4. 트리거 안에서는 커밋(Commit)과 롤백(Rollback)이 불가능

5. 트리거가 실행되었을 때 트리거내의 PL/SQL 블록에 에러가 발생하였을 경우 트리거에 의한 기능이 수행되지 않을 뿐 아니라 관련 테이블의 해당 레코드도 변경이 안됨



트리거가 사용되는 경우는 다음과 같습니다.
- 테이블 생성 시 제약조건 선언 제한이 불가능하고 복잡한 무결성 제한을 유지하기 위해
- 데이터 조작문(DML)을 사용한 사람, 변경한 내용, 시간 등을 기록함으로써 정보를
감시하는 경우
- 테이블을 변경할 때 일어나야 할 동작을 다른 테이블 또는 다른 프로그램들에게
자동적으로 신호하기 위해