
✅ RETURNS TRIGGER는 Trigger를 return한다는 뜻일까?
RETURNS TRIGGER는 “Trigger 객체를 반환한다”는 뜻이 아니라, “Trigger에서 호출될 수 있는 함수”라는 함수의 타입을 의미한다.
즉 반환값의 자료형 이름이 TRIGGER인 것이지, 실제로 Trigger 객체를 반환하는 것이 아니다.
그리고 RETURNS TRIGGER인 함수는 문법상 반드시
RETURN NEW;
RETURN OLD;
RETURN NULL;
중 하나를 반환해야 한다.
CREATE FUNCTION public.notify_follow()
RETURNS TRIGGER
SECURITY DEFINER SET search_path = ''
LANGUAGE plpgsql
AS $$
BEGIN
INSERT INTO public.notifications (type, source_id, target_id)
VALUES ('follow', NEW.follower_id, NEW.following_id);
RETURN NEW;
END;
$$;
CREATE TRIGGER notify_follow_trigger
AFTER INSERT ON public.follows
FOR EACH ROW
EXECUTE FUNCTION public.notify_follow();
결론
RETURNS TRIGGER는 Trigger를 반환한다는 뜻이 아니라 Trigger 전용 함수이다. 라고 읽으면 덜 헷갈린다.
그리고 RETURN NEW;는 Trigger가 처리하는 Row를 반환한다.
'🧩 SQL' 카테고리의 다른 글
| SQL - PostgreSQL - CREATE OR REPLACE가 가능할 때와 불가능할 때 (0) | 2026.07.13 |
|---|---|
| SQL - PostgreSQL - SET search_path = ''를 사용하는 이유? (0) | 2026.07.13 |
| SQL - Drizzle Self Reference (0) | 2026.05.26 |
| SQL - Supabase & Drizzle (0) | 2026.05.22 |
| SQL - Drizzle(ORM) (0) | 2026.04.13 |