DROP FUNCTION — 함수 삭제하기
DROP FUNCTION — 함수 삭제하기
DROP FUNCTION은 이미 존재하는 함수의 정의를 데이터베이스에서 제거하는 명령이에요. PostgreSQL에서는 같은 이름으로 인자 목록이 다른 함수가 여럿 존재할 수 있기 때문에, 보통은 인자 타입까지 함께 지정해 어떤 함수를 지울지 정확하게 짚어 줍니다. 함수 소유자만 실행할 수 있다는 점을 기억해 두세요.
출처: PostgreSQL 문서
본문
Synopsis
DROP FUNCTION [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...]
[ CASCADE | RESTRICT ]
Description
DROP FUNCTION은 이미 존재하는 함수의 정의를 제거해요. 이 명령을 실행하려면 함수의 소유자여야 합니다. 같은 이름에 인자 목록이 서로 다른 함수가 여러 개 있을 수 있으므로, 함수의 인자 타입을 반드시 지정해 주어야 해요.
Parameters
- IF EXISTS — 함수가 존재하지 않아도 오류를 던지지 않아요. 이 경우에는 통지(notice)만 발행됩니다.
- name — 이미 존재하는 함수의 이름(스키마 한정 가능). 인자 목록을 지정하지 않으면 그 스키마 안에서 이름이 유일해야 해요.
- argmode — 인자의 모드:
IN,OUT,INOUT,VARIADIC. 생략하면 기본값은IN이에요.DROP FUNCTION은 함수의 정체를 결정할 때 입력 인자만 필요하므로OUT인자는 실제로 신경 쓰지 않는다는 점을 기억하세요. 그래서IN,INOUT,VARIADIC인자만 나열하면 충분합니다. - argname — 인자의 이름. 함수의 정체를 결정할 때는 인자 데이터 타입만 필요하므로,
DROP FUNCTION은 인자 이름을 실제로 신경 쓰지 않아요. - argtype — 함수 인자의 데이터 타입(들)(스키마 한정 가능).
- CASCADE — 함수에 의존하는 객체(연산자, 트리거 등)와, 나아가 그 객체들에 의존하는 모든 객체를 자동으로 함께 삭제해요 (5.15절 참고).
- RESTRICT — 함수에 의존하는 객체가 있으면 삭제를 거부해요. 이게 기본값이에요.
Examples
이 명령은 제곱근 함수를 제거해요.
DROP FUNCTION sqrt(integer);
한 명령으로 여러 함수를 삭제하기:
DROP FUNCTION sqrt(integer), sqrt(bigint);
함수 이름이 스키마 안에서 유일하다면 인자 목록 없이도 해당 함수를 가리킬 수 있어요.
DROP FUNCTION update_employee_salaries;
이건 아래 명령과는 다르다는 점을 기억해 두세요.
DROP FUNCTION update_employee_salaries();
후자는 인자가 0개인 함수를 가리키는 반면, 전자는 이름이 유일하기만 하면 인자 0개인 함수를 포함해 어떤 개수의 인자를 가진 함수든 가리킬 수 있어요.
Compatibility
이 명령은 SQL 표준을 따르며, 아래 항목은 PostgreSQL의 확장입니다.
- 표준은 명령 하나로 함수를 하나만 삭제할 수 있어요.
IF EXISTS옵션- 인자 모드와 이름을 지정할 수 있는 기능