×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

6.1.12. ALTER FUNCTION

6.1.12. ALTER FUNCTION

ALTER FUNCTION — изменение определения функции

Синтаксис

ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    action [ ... ] [ RESTRICT ]
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    RENAME TO new_name
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    SET SCHEMA new_schema
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
    [ NO ] DEPENDS ON EXTENSION extension_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 }
    COST execution_cost
    ROWS result_rows
    SUPPORT support_function
    SET configuration_parameter { TO | = } { value | DEFAULT }
    SET configuration_parameter FROM CURRENT
    RESET configuration_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

Изменяет изменяемость (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_parameter
value

Добавляет или изменяет присваивание параметра конфигурации, которое должно быть выполнено при вызове функции. Если 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 является необязательным.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению