Trigger

2020. 6. 18. 18:18DB

728x90

 Trigger는 데이터베이스 내부의 특정 테이블에 INSERT, DELETE, UPDATE와 같은 DML 문이 수행되었을 때, 데이터베이스에서 자동으로 수행되는 저장프로시져입니다. 즉, 사용자가 직접 호출하는 것이 아니라, 데이터베이스에서 자동적으로 호출하는 것이 가장 큰 특징입니다.
 예를 들어, [사원]테이블에 새로운 데이터가 들어오면 [급여]테이블에 새로운 데이터를 자동으로 생성하고 싶을 경우, [사원] 테이블에 트리거를 설정하여 구현할 수 있습니다.

Trigger의 성능

  • 오버헤드가 적음
  • Trigger를 실행하는데 걸리는 대부분의 시간은 다른 테이블을 참조하는데 사용
  • Trigger에 의해 참조되는 다른 테이블의 위치가 작업 시간을 결정 지음

Trigger의 제한

  • Trigger는 트래잭션 제어문을 사용할 수 없음
  • Trigger는 Triggering 문장의 실행부분으로써 실행되고 Triggering 문장과 같은 트랜잭션에 존재
  • Triggering 문장이 COMMIT, ROLLBACK 될 때, Trigger의 작업도 COMMIT, ROLLBACK 됨

Trigger 작성법

CREATE [OR REPLACE] TRIGGER 트리거명 [BEFORE | AFTER]
TRIGGERING-EVENT ON 테이블명
[FOR EACH ROW]
PL/SQL BLOCK;
  • BEFORE | AFTER: BEFORE는 트리거링 이벤트 발생 전에 PL/SQL BLOCK을 실행하고 AFTER는 발생 후에 실행합니다.
  • TRIGGERING-EVENT: DML의 INSERT, UPDATE, DELETE를 기술합니다. 지정된 DML이 실행될 때만 트리거가 실행합니다.
  • FOR EACH ROW: 각 행이 변할 때마다 실행되는 행 수준의 트리거일 때만 지정합니다.
  • PL/SQL BLOCK: 트리거에서 처리할 블록의 명령문을 기술합니다.
728x90

'DB' 카테고리의 다른 글

SQL IN과 OR의 비교  (0) 2020.09.11
MVCC  (0) 2020.06.26
DB Index  (0) 2020.06.19
Sharding  (0) 2020.05.08
Scala Subquery vs Left Outer Join  (0) 2020.03.30