Database/SQL

[SQL] 트리거

gangintheremark 2021. 12. 6. 05:15
728x90

트리거

  • 테이블에 이벤트가 발생하면 자동으로 실행되는 작업
  • 데이터베이스 작업을 제한하거나, 작업의 기록log, 작업에 대한 감사audit를 수행하기 위해 사용
  • 트리거의 구성요소 : 이벤트, 조건, 동작
  • 행 트리거 : 테이블 내에 변경되는 행에 대해 각각 실행
  • 문장 트리거 : INSERT UPDATE DELETE 문장 전체에 대해 실행

[트리거 정의]

CREATE\[OR REPLACE\] TRIGGER <trigger\_name>  
  \[BEFORE|AFTER\] \[INSERT|UPDATE|DELETE\] ON <table\_name>  
 \[FOR EACH ROW|FOR EACH STATEMENT\]  
 \[WHEN condition\]  
BEGIN  
  ...  
END;

[트리거 삭제]

DROP TRIGGER <trigger\_name>

[트리거 카탈로그]

  • ALL_TRIGGERS : 데이터베이스 내의 모든 트리거
  • USER_TRIGGERS: 현재 사용자의 트리거들

🍀 트리거의 예시

CREATE OR REPLACE TRIGGER to\_refresh\_dept\_size  
  AFTER INSERT or UPDATE or DELETE OF dept ON student  
BEGIN  
  refresh\_dept\_size;  // 학과별 학생 수를 저장해노은 저장프로시저 호출   
END;  
/  

INSERT into student values (600,'홍길동',3,'IT');  

-- 실행결과  
-- >> 실행하면 자동으로 dept\_size에 IT 추가
728x90