1. 함수 사용 방법
함수 선언
리턴 타입이 `TRIGGER` 일 때
이 때는 반드시 트리거가 파라미터를 넘겼을 때 `TG_ARGV` 로 받아야한다.
plpgsql 언어로 함수를 정의하고 리턴타입이 `TRIGGER` 인 경우, 자동으로 다음과 같은 변수가 블록 최상단에 선언된다.
- NEW
레코드 타입, 새로 `INSERT | UPDATE` 된 로우
DELTE에 대해서는 null 값을 가짐 - OLD
레코드 타입, 변경 전 `UPDATE | DELETE` 된 로우
INSERT에 대해서는 null 값을 가짐 - TG_ARGV[]
text 배열, 파라미터를 받아올 때 이 키워드로 받아와야함.
트리거 함수는 반드시
NULL이나 레코드 타입을 반환해야함.
트리거
트리거 선언
네이밍 컨벤션
함수
fn_<동사>
postgreSQL 문서를 보면 절대적인 네이밍 컨벤션은 없는 것 같다.
트리거
tr_<테이블명>_<C || R || U || D>
- users 테이블 업데이트 트리거=> tr_users_U
- users 테이블 삭제 트리거 => tr_users_D
💡 트리거 함수 정의 팁
트리거 함수는 선언 전에 미리 EXECUTE 할 함수 원형이 정의 되어 있어야 하고,
Argument 를 함수 프로토타입에서 정의해선 안된다.
The trigger function must be defined before the trigger itself can be created.
The trigger function must be declared as a function taking no arguments and returning type trigger
(The trigger function receives its input through a specially-passed `TriggerData` structure, not in the form of ordinary function arguments.)
- PostgresSQL Document
🔗 Reference
'DataBase > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] Trigger + Transaction (0) | 2022.04.18 |
---|---|
[PostgreSQL] Transaction + Pool 사용시 주의 (0) | 2022.04.04 |
[PostgreSQL] Notify (0) | 2022.03.25 |
[PostgreSQL] Transaction 왜, 언제, 어떻게 동작하나? (0) | 2022.03.25 |
[PostgreSQL] Sequence 함수 및 값 변경 (번역) (0) | 2022.03.25 |