В 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 выдаст ошибку.