트리거와 트리거 함수
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)
'공부 자료 > DataBase' 카테고리의 다른 글
[SQL] DML - 데이터 조작어 (0) | 2023.09.07 |
---|---|
[SQL] DDL : 데이터 정의어 (0) | 2023.09.06 |
[SQL] limit - 데이터를 일부만 가져오기 (0) | 2023.09.06 |
[SQL] 서브쿼리 (0) | 2023.09.06 |
[SQL] JOIN(INNER, LEFT, RIGHT, SELF, FULL, NATURAL) (0) | 2023.09.05 |