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 옵션
  • 인자 모드와 이름을 지정할 수 있는 기능

더 알아보기 (Learn more)