본문 바로가기

공부 자료/DataBase

[ Trigger ] 트리거와 트리거 함수

트리거와 트리거 함수

 

 

Mybatis 사용을 위해 DB 생성을 위한 DML을 작성하면서 트리거에 대한 존재를 알게 되었는데,

트리거가 무엇이고 어떻게 작성하는지 간단하게 알아보고자 한다.

(JPA만 사용하다보니 @LastModifiedDate를 사용할 수 없어 트리거를 사용해보고자 한다.)

 

 

트리거(Trigger)란?

: DB Table에서 INSERT / UPDATE / DELETE가 발생할 때 자동으로 실행되는 함수

 

트리거 함수(Trigger Fuction)이란?

: 트리거가 호출하는 함수로 PL/pgSQL로 작성됨

 

 

예를들면, 회원 정보를 수정할 때 수정 시간을 함께 변경하고자 한다면?

트리거 함수를 작성해 member 테이블에서 업데이트가 발생할 때 수정 시간을 자동으로 변경하는 함수를 실행시키면 되는 것이다.

(위의 내용을 바탕으로 예시를 작성할 예정이며, 필요하다면 필요에 맞게 수정이 필요하다.)

 

 

1. 트리거 함수를 생성한다.

create or replace function update_time()
returns trigger as $$
begin
     new.moddate = current_date;
     return new;
end;
$$ language plpgsql;

 

2. 트리거를 생성해 함수를 호출한다.

create trigger member_update_time
before update on member
for each row
execute function update_time();
  • BEFORE INSERT / AFTER INSERT : 삽입 전 / 후
  • BEFORE UPDATE / AFTER UPDATE : 업데이트 전 / 후
  • BEFORE DELETE / AFTER DELETE : 삭제 전 / 후
  • FOR EACH ROW : 각 행마다 트리거 실행
  • FOR EACH STATEMENT : 하나의 sql 실행시 트리거가 한 번만 실행 (psql에서는 지원x)