ALTER FUNCTION#
ALTER FUNCTION
ALTER FUNCTION — изменить определение функции
Синтаксис
ALTER FUNCTIONname
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ]action
[ ... ] [ RESTRICT ] ALTER FUNCTIONname
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ] RENAME TOnew_name
ALTER FUNCTIONname
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ] OWNER TO {new_owner
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER FUNCTIONname
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ] SET SCHEMAnew_schema
ALTER FUNCTIONname
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ] [ NO ] DEPENDS ON EXTENSIONextension_name
whereaction
is one of: 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_cost
ROWSresult_rows
SUPPORTsupport_function
SETconfiguration_parameter
{ TO | = } {value
| DEFAULT } SETconfiguration_parameter
FROM CURRENT RESETconfiguration_parameter
RESET 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_name
NO DEPENDS ON EXTENSION
extension_name
Эта форма помечает функцию как зависимую от расширения или больше не зависимую от этого расширения, если указано
NO
. Функция, помеченная как зависимая от расширения, удаляется при удалении расширения, даже еслиCASCADE
не указано. Функция может зависеть от нескольких расширений и будет удалена при удалении любого из этих расширений.CALLED ON NULL INPUT
RETURNS NULL ON NULL INPUT
STRICT
CALLED ON NULL INPUT
изменяет функцию таким образом, что она будет вызываться, когда один или несколько ее аргументов являются null.RETURNS NULL ON NULL INPUT
илиSTRICT
изменяет функцию таким образом, что она не будет вызываться, если хотя бы один из ее аргументов является null; вместо этого автоматически предполагается null-результат. Дополнительную информацию см. в разделе CREATE FUNCTION.IMMUTABLE
STABLE
VOLATILE
Измените волатильность функции на указанную настройку. См. 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
Установите или измените функцию поддержки планировщика для использования этой функции. См. Раздел 35.10 для получения подробной информации. Для использования этой опции вы должны быть суперпользователем.
Эта опция не может быть использована для полного удаления функции поддержки, так как она должна указывать на новую функцию поддержки. Используйте
CREATE OR REPLACE FUNCTION
, если вам это необходимо.configuration_parameter
value
Добавьте или измените присваивание, которое должно быть сделано для параметра конфигурации при вызове функции. Если
value
равноDEFAULT
или, эквивалентно, используетсяRESET
, то локальная настройка функции удаляется, так что функция выполняется со значением, присутствующим в ее окружении. ИспользуйтеRESET ALL
, чтобы очистить все локальные настройки функции.SET FROM CURRENT
сохраняет значение параметра, которое является текущим, когда выполняетсяALTER FUNCTION
, как значение, которое будет применяться при входе в функцию.См. SET и Глава 18 для получения дополнительной информации о допустимых именах параметров и их значениях.
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
, которое является необязательным в Tantor BE.