트리거

INSERT, UPDATE, DELETE문이 TABLE에 대해 행해질 때 묵시적으로 수행되는 PROCEDURE 입니다.

CREATE [or replace] TRIGGER trigger_name
BEFORE | AFTER
trigger_event ON table_name
[for eache row]
[when (condition)]
  • BEFORE : INSERT, UPDATE, DELETE문이 실행되기 전에 트리거가 실행됩니다.
  • AFTER : INSERT, UPDATE, DELETE문이 실행된 후 트리거가 실행됩니다.
  • trigger_event : INSERT, UPDATE, DELETE 중에서 한 개 이상 올 수 있습니다.
  • FOR EACH ROW : 이 옵션이 있으면 행 트리거가 됩니다.
    • 행 트리거 : 컬럼의 각각의 행의 데이터 행 변화가 생길 때마다 실행되며, 그 데이터 행의 실제 값을 제어할 수 있습니다.
    • 문장 트리거 : 트리거 사건에 의해 단 한번 실행되며, 컬럼의 각 데이터 행을 제어할 수 없습니다.
CREATE OR REPLACE TRIGGER update_dept
BEFORE
UPDATE ON departments
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE('변경 전 컬럼 값 : ' || :old.department_name);
DBMS_OUTPUT.PUT_LINE('변경 후 컬럼 값 : ' || :new.department_name);
END;
update departments set department_name = '개발' where department_id = 270;
create or replace TRIGGER update_job_history
  AFTER UPDATE OF job_id, department_id ON employees
  FOR EACH ROW
BEGIN
  add_job_history(:old.employee_id, :old.hire_date, sysdate,
                  :old.job_id, :old.department_id);
END;

주석 형식

REATE OR REPLACE PROCEDURE procedure_name (
    -- 매개변수 선언
    param1 IN NUMBER,
    param2 OUT VARCHAR2
)
/* 
----------------------------------------------------
  프로시저 명: procedure_name
  설      명: 이 프로시저는 회원 정보를 업데이트합니다.
  작  성  자: 홍길동
  작  성  일: 2023-10-27
  수정 이력: 
    2023-11-01: 김철수, 오류 수정 작업 진행
----------------------------------------------------
*/
AS
-- 프로시저 본문 시작
BEGIN
    -- 코드 내용
    NULL; 
END;
/

Categories:

Updated: