DROP FUNCTION
DROP FUNCTION — удалить функцию
Синтаксис
DROP FUNCTION [ IF EXISTS ]имя
[ ( [ [режим_аргумента
] [имя_аргумента
]тип_аргумента
[, ...] ] ) ] [, ...] [ CASCADE | RESTRICT ]
Описание
DROP FUNCTION
удаляет определение существующей функции. Пользователь, выполняющий эту команду, должен быть владельцем функции. Помимо имени функции требуется указать типы её аргументов, так как в базе данных могут существовать несколько функций с одним именем, но с разными списками аргументов.
Параметры
IF EXISTS
Не считать ошибкой, если функция не существует. В этом случае будет выдано замечание.
имя
Имя существующей функции (возможно, дополненное схемой). Если список аргументов не указан, имя функции должно быть уникальным в её схеме.
режим_аргумента
Режим аргумента:
IN
,OUT
,INOUT
илиVARIADIC
. По умолчанию подразумеваетсяIN
. Заметьте, чтоDROP FUNCTION
не учитывает аргументыOUT
, так как для идентификации функции нужны только типы входных аргументов. Поэтому достаточно перечислить только аргументыIN
,INOUT
иVARIADIC
.имя_аргумента
Имя аргумента. Заметьте, что на самом деле
DROP FUNCTION
не обращает внимание на имена аргументов, так как для однозначной идентификации функции достаточно только типов аргументов.тип_аргумента
Тип данных аргументов функции (возможно, дополненный именем схемы), если таковые имеются.
CASCADE
Автоматически удалять объекты, зависящие от данной функции (например, операторы или триггеры), и, в свою очередь, все зависящие от них объекты (см. Раздел 5.15).
RESTRICT
Отказать в удалении функции, если от неё зависят какие-либо объекты. Это поведение по умолчанию.
Примеры #
Эта команда удаляет функцию, вычисляющую квадратный корень:
DROP FUNCTION sqrt(integer);
Удаление нескольких функций одной командой:
DROP FUNCTION sqrt(integer), sqrt(bigint);
Если имя функции уникально в её схеме, на неё можно сослаться без списка аргументов:
DROP FUNCTION update_employee_salaries;
Заметьте, что это отличается от
DROP FUNCTION update_employee_salaries();
Данная форма ссылается на функцию с нулём аргументов, тогда как первый вариант подходит для функции с любым числом аргументов, в том числе и с нулём, если имя функции уникально.
Совместимость #
Эта команда соответствует стандарту SQL, но дополнена следующими расширениями Postgres Pro:
Стандарт допускает удаление в одной команде только одной функции.
Указание
IF EXISTS
Возможность указывать режимы и имена аргументов