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