DROP FUNCTION в PostgreSQL: удаление функции

В PostgreSQL оператор DROP FUNCTION используется для удаления функции из базы данных. После выполнения этого оператора функция становится недоступной, и все зависящие от неё объекты могут быть затронуты.

Синтаксис

DROP FUNCTION [IF EXISTS] имя_функции(аргументы) [CASCADE | RESTRICT];
  • IF EXISTS — предотвращает ошибку, если функция не существует.
  • CASCADE — автоматически удаляет объекты, зависящие от функции.
  • RESTRICT — запрещает удаление, если есть зависимые объекты (по умолчанию).

Удаление функции без аргументов

Если функция не принимает аргументов, её удаляют так:

DROP FUNCTION get_current_time();

Удаление функции с аргументами

При наличии аргументов требуется указать их типы:

DROP FUNCTION calculate_sum(integer, integer);

Удаление функции, если она существует

Чтобы избежать ошибки, если функция отсутствует:

DROP FUNCTION IF EXISTS old_function();

Удаление функции с зависимостями

Если другие объекты ссылаются на удаляемую функцию, используется CASCADE:

DROP FUNCTION process_data() CASCADE;

Это приведёт к удалению всех зависимых объектов.

Запрет удаления при наличии зависимостей

При использовании RESTRICT удаление возможно только при отсутствии зависимых объектов:

DROP FUNCTION process_data() RESTRICT;

Если зависимые объекты есть, PostgreSQL выдаст ошибку.