반응형

Oracle Trigger 오라클 트리거

  • OracleTrigger는 특정 이벤트가 발생할 때 자동으로 실행되는 PL/SQL 코드 블록입니다.

  • 데이터베이스 트리거는 데이터 무결성을 보장하거나 특정 작업을 자동화하는 데 사용됩니다.

  • TriggerINSERT, UPDATE, DELETE 작업 시 특정 테이블에서 발생할 수 있으며, BEFORE, AFTER, 또는 INSTEAD OF 옵션으로 트리거의 실행 시점을 지정할 수 있습니다.



1. 트리거의 주요 구성 요소

  • 이벤트 : 트리거가 작동하는 시점 (INSERT, UPDATE, DELETE).

  • 타이밍 : 이벤트가 발생하기 전(BEFORE)이나 후(AFTER) 또는 대신(INSTEAD OF) 실행됩니다.

  • 레벨 : 트리거는 행 레벨(Row-level) 또는 문장 레벨(Statement-level) 로 정의할 수 있습니다.
    • 행 레벨(Row-level): 각 행에 대해 실행됩니다.
    • 문장 레벨(Statement-level): 한 번만 실행됩니다.


2. 트리거 예제

  • 기본 예제 : 직원 테이블에서 salary가 변경될 때 로그를 기록하는 트리거를 만듭니다.

2.1 예제 테이블 생성

  • 먼저, 예제용으로 직원(employees) 테이블과 로그(salary_log) 테이블을 생성합니다.

  • sql

      CREATE TABLE employees (
          employee_id NUMBER PRIMARY KEY,
          name VARCHAR2(50),
          salary NUMBER
      );
      
      CREATE TABLE salary_log (
          log_id NUMBER PRIMARY KEY,
          employee_id NUMBER,
          old_salary NUMBER,
          new_salary NUMBER,
          change_date DATE
      );
    

2.2 트리거 생성

  • employees 테이블의 salary가 변경될 때마다 salary_log 테이블에 변경 기록을 추가하는 트리거를 작성합니다.

  • sql

      CREATE OR REPLACE TRIGGER trg_salary_update
      AFTER UPDATE OF salary ON employees
      FOR EACH ROW
      BEGIN
          INSERT INTO salary_log (log_id, employee_id, old_salary, new_salary, change_date)
          VALUES (salary_log_seq.NEXTVAL, :OLD.employee_id, :OLD.salary, :NEW.salary, SYSDATE);
      END;
    

2.3 트리거 설명

  • AFTER UPDATE OF salary ON employees : employees 테이블의 salary 컬럼이 업데이트된 후에 트리거가 실행됩니다.

  • FOR EACH ROW : 각 행마다 실행되며, 행 레벨 트리거로 정의되었습니다.

  • :OLD:NEW :

    • :OLD.salary는 업데이트 전의 급여를, :NEW.salary는 업데이트 후의 급여를 나타냅니다.
  • salary_log_seq.NEXTVAL은 로그 아이디(log_id)를 자동으로 증가시키기 위해 시퀀스를 사용했다고 가정한 예제입니다.


2.4 트리거 실행 결과

  • 위 트리거가 생성된 후, 직원의 salary가 업데이트되면 자동으로 로그가 기록됩니다.

2.5 예제 실행

  • sql

      UPDATE employees
      SET salary = salary * 1.1
      WHERE employee_id = 1;
    
  • 이 업데이트가 실행되면, trg_salary_update 트리거가 작동하여 salary_log 테이블에 변경 기록이 자동으로 추가됩니다.



3. 트리거 활용 방안

  • 데이터 무결성 을 유지하기 위해 사용됩니다. 예를 들어, 특정 조건을 위반하지 않도록 제한할 수 있습니다.

  • 감사(Audit) 기능으로 특정 변경 사항을 기록할 수 있습니다.

  • 자동 계산 작업에서, 다른 테이블에 연관된 데이터를 자동으로 갱신할 때 유용합니다.


  • Oracle의 트리거는 이벤트를 기준으로 다양한 자동 작업을 처리할 수 있는 강력한 도구입니다.



  • 도움이 되셨으면 하단의 ❤️ 공감 버튼 부탁 드립니다. 감사합니다! 😄
  • 일부 모바일 환경에서는 ❤️ 버튼이 보이지 않습니다.

728x90
반응형

+ Recent posts