ALTER FUNCTION — изменение определения функции
ALTER FUNCTIONname[ ( [ [argmode] [argname]argtype[, ...] ] ) ]action[ ... ] [ RESTRICT ] ALTER FUNCTIONname[ ( [ [argmode] [argname]argtype[, ...] ] ) ] RENAME TOnew_nameALTER FUNCTIONname[ ( [ [argmode] [argname]argtype[, ...] ] ) ] OWNER TO {new_owner| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER FUNCTIONname[ ( [ [argmode] [argname]argtype[, ...] ] ) ] SET SCHEMAnew_schemaALTER FUNCTIONname[ ( [ [argmode] [argname]argtype[, ...] ] ) ] [ NO ] DEPENDS ON EXTENSIONextension_nameгдеactionможет быть одним из: CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT IMMUTABLE | STABLE | VOLATILE [ NOT ] LEAKPROOF [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER PARALLEL { UNSAFE | RESTRICTED | SAFE } COSTexecution_costROWSresult_rowsSUPPORTsupport_functionSETconfiguration_parameter{ TO | = } {value| DEFAULT } SETconfiguration_parameterFROM CURRENT RESETconfiguration_parameterRESET ALL
Команда ALTER FUNCTION изменяет определение функции.
Чтобы использовать ALTER FUNCTION, вы должны быть владельцем функции.
Чтобы изменить схему функции, вы также должны иметь право CREATE
в новой схеме. Чтобы изменить владельца, вы должны иметь возможность
выполнить SET ROLE для новой роли-владельца, и эта роль должна
иметь право CREATE в схеме функции.
(Эти ограничения гарантируют, что изменение владельца не позволит сделать ничего такого,
что нельзя было бы сделать удалением и повторным созданием функции.
Однако суперпользователь может изменить владельца любой функции в любом случае.)
nameИмя (возможно, с указанием схемы) существующей функции. Если список аргументов не указан, имя должно быть уникальным в своей схеме.
argmode
Режим аргумента: IN, OUT,
INOUT или VARIADIC.
Если опущен, по умолчанию используется IN.
Обратите внимание, что ALTER FUNCTION фактически не учитывает
аргументы OUT, поскольку для определения идентификатора функции
нужны только входные аргументы.
Поэтому достаточно перечислить аргументы IN, INOUT
и VARIADIC.
argname
Имя аргумента.
Обратите внимание, что ALTER FUNCTION фактически не учитывает
имена аргументов, поскольку для определения идентификатора функции
нужны только типы данных аргументов.
argtypeТип(ы) данных аргументов функции (опционально с указанием схемы), если они есть.
new_nameНовое имя функции.
new_owner
Новый владелец функции. Обратите внимание, что если функция помечена как
SECURITY DEFINER, она впоследствии будет
выполняться от имени нового владельца.
new_schemaНовая схема для функции.
DEPENDS ON EXTENSION extension_nameNO DEPENDS ON EXTENSION extension_name
Эта форма помечает функцию как зависимую от расширения или, если указано
NO, как больше не зависящую от этого расширения.
Функция, помеченная как зависимая от расширения, удаляется при удалении
расширения, даже если не указано CASCADE.
Функция может зависеть от нескольких расширений и будет удалена при удалении
любого из них.
CALLED ON NULL INPUTRETURNS NULL ON NULL INPUTSTRICTCALLED ON NULL INPUT изменяет функцию так,
что она будет вызываться, когда некоторые или все её аргументы равны
null. RETURNS NULL ON NULL INPUT или
STRICT изменяет функцию так, что она не вызывается,
если любой из её аргументов равен null; вместо этого автоматически
предполагается результат null. Дополнительную информацию см. в разделе
CREATE FUNCTION.
IMMUTABLESTABLEVOLATILEИзменяет изменяемость (volatility) функции на указанную настройку. Подробности см. в разделе CREATE FUNCTION.
[ EXTERNAL ] SECURITY INVOKER[ EXTERNAL ] SECURITY DEFINER
Изменяет, является ли функция определителем безопасности или нет.
Ключевое слово EXTERNAL игнорируется для соответствия
стандарту SQL. Подробнее об этой возможности см. в разделе
CREATE FUNCTION.
PARALLELИзменяет, считается ли функция безопасной для параллельного выполнения. Подробности см. в разделе CREATE FUNCTION.
LEAKPROOFИзменяет, считается ли функция непроницаемой для утечек данных или нет. Подробнее об этой возможности см. в разделе CREATE FUNCTION.
COST execution_costИзменяет предполагаемую стоимость выполнения функции. Дополнительную информацию см. в разделе CREATE FUNCTION.
ROWS result_rowsИзменяет предполагаемое количество строк, возвращаемых функцией, возвращающей множество. Дополнительную информацию см. в разделе CREATE FUNCTION.
SUPPORT support_functionУстанавливает или изменяет вспомогательную функцию планировщика, используемую для данной функции. Подробности см. в разделе Раздел 5.1.11. Чтобы использовать эту опцию, необходимо быть суперпользователем.
Эту опцию нельзя использовать для полного удаления вспомогательной функции,
поскольку она должна указывать новую вспомогательную функцию.
Используйте CREATE OR REPLACE FUNCTION, если вам нужно это сделать.
configuration_parametervalue
Добавляет или изменяет присваивание параметра конфигурации,
которое должно быть выполнено при вызове функции. Если
value — это DEFAULT
или, что равносильно, используется RESET, то
установка на уровне функции удаляется, так что функция выполняется со значением,
присутствующим в её окружении. Используйте RESET
ALL для очистки всех установок на уровне функции.
SET FROM CURRENT сохраняет значение параметра,
которое действует на момент выполнения ALTER FUNCTION, в качестве значения,
которое должно быть применено при входе в функцию.
См. SET и Глава 3.4 для получения дополнительной информации о допустимых именах параметров и их значениях.
RESTRICTИгнорируется для соответствия стандарту SQL.
Чтобы переименовать функцию sqrt для типа
integer в square_root:
ALTER FUNCTION sqrt(integer) RENAME TO square_root;
Чтобы изменить владельца функции sqrt для типа
integer на joe:
ALTER FUNCTION sqrt(integer) OWNER TO joe;
Чтобы изменить схему функции sqrt для типа
integer на maths:
ALTER FUNCTION sqrt(integer) SET SCHEMA maths;
Чтобы пометить функцию sqrt для типа
integer как зависящую от расширения
mathlib:
ALTER FUNCTION sqrt(integer) DEPENDS ON EXTENSION mathlib;
Чтобы настроить путь поиска, который автоматически устанавливается для функции:
ALTER FUNCTION check_password(text) SET search_path = admin, pg_temp;
Чтобы отключить автоматическую установку search_path для функции:
ALTER FUNCTION check_password(text) RESET search_path;
Теперь функция будет выполняться с тем путём поиска, который использует её вызывающая сторона.
Этот оператор частично совместим с оператором ALTER
FUNCTION в стандарте SQL. Стандарт позволяет изменять больше
свойств функции, но не предоставляет возможности переименовать функцию,
сделать её определителем безопасности, прикреплять значения параметров конфигурации к функции
или изменять владельца, схему или изменяемость функции. Стандарт также
требует ключевое слово RESTRICT, которое в
Digital Q.DataBase является необязательным.