
✅ CREATE OR REPLACE가 불가능할 때
대부분의 경우에 가능하지만 아래와 같은 경우에 불가능하다.
- 반환 타입(RETURNS)변경
- 매개변수 타입 변경
- 함수 시그니처 변경
예를 들어
handle_new_user()
↓
handle_new_user(user_id uuid)
처럼 바꾸면 CREATE OR REPLACE로는 해결되지 않는다.
이럴 때는
DROP FUNCTION
으로 지우고 새로 만들어야 한다.
CASCADE
DROP FUNCTION IF EXISTS public.handle_new_user() CASCADE;
만약 해당 Function이 Trigger에서 사용되고 있다면 의존(depend)상태이기 때문에 CASCADE로 해당 Trigger까지 삭제해줘야 에러가 발생하지 않는다.
'🧩 SQL' 카테고리의 다른 글
| SQL - PostgreSQL - Security Definer View (0) | 2026.07.15 |
|---|---|
| SQL - PostgreSQL - RLS(Row Level Security) (0) | 2026.07.15 |
| SQL - PostgreSQL - SET search_path = ''를 사용하는 이유? (0) | 2026.07.13 |
| SQL - PostgreSQL - RETURNS TRIGGER는 Trigger를 return한다는 뜻일까? (0) | 2026.07.13 |
| SQL - Drizzle Self Reference (0) | 2026.05.26 |