Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по SQL
Часто задаваемые вопросы
Изменяет определение процедуры.
ALTER PROCEDURE <name> [ ( [ [<argmode>] [<argname>] <argtype> [, ...] ] ) ]
<action> [, ... ] [RESTRICT]
ALTER PROCEDURE <name> [ ( [ [<argmode>] [<argname>] <argtype> [, ...] ] ) ]
RENAME TO <new_name>
ALTER PROCEDURE <name> [ ( [ [<argmode>] [<argname>] <argtype> [, ...] ] ) ]
OWNER TO { <new_owner> | CURRENT_USER | SESSION_USER }
ALTER PROCEDURE <name> [ ( [ [<argmode>] [<argname>] <argtype> [, ...] ] ) ]
SET SCHEMA <new_schema>
ALTER PROCEDURE <name> [ ( [ [<argmode>] [<argname>] <argtype> [, ...] ] ) ]
DEPENDS ON EXTENSION <extension_name>
where <action> is one of:
{ [EXTERNAL] SECURITY INVOKER | [EXTERNAL] SECURITY DEFINER }
SET <configuration_parameter> { TO | = } { <value> | DEFAULT }
SET <configuration_parameter> FROM CURRENT
RESET <configuration_parameter>
RESET ALL
ALTER PROCEDURE изменяет определение существующей процедуры.
Чтобы использовать команду ALTER PROCEDURE, вы должны быть владельцем процедуры. Чтобы изменить схему процедуры, вы также должны обладать привилегией CREATE в новой схеме. Чтобы изменить владельца, вы должны быть прямым или косвенным членом новой роли-владельца, и эта роль должна иметь привилегию CREATE на схему процедуры. (Эти ограничения гарантируют, что изменение владельца не позволяет сделать ничего такого, что нельзя было бы сделать путём удаления и повторного создания процедуры. Однако суперпользователь может изменить владельца любой процедуры.)
В базе данных существуют ограничения на использование функций, определённых как STABLE или VOLATILE. Дополнительную информацию см. в разделе CREATE FUNCTION.
Переименовать процедуру insert_data с двумя аргументами типа integer в insert_record:
ALTER PROCEDURE insert_data(integer, integer) RENAME TO insert_record;
Изменить владельца процедуры insert_data с двумя аргументами типа integer на joe:
ALTER PROCEDURE insert_data(integer, integer) OWNER TO joe;
Изменить схему процедуры insert_data с двумя аргументами типа integer на accounting:
ALTER PROCEDURE insert_data(integer, integer) SET SCHEMA accounting;
Пометить процедуру insert_data(integer, integer) как зависимую от расширения myext:
ALTER PROCEDURE insert_data(integer, integer) DEPENDS ON EXTENSION myext;
Настроить путь поиска (search path), который автоматически устанавливается для процедуры:
ALTER PROCEDURE check_password(text) SET search_path = admin, pg_temp;
Отключить автоматическую установку search_path для процедуры:
ALTER PROCEDURE check_password(text) RESET search_path;
Теперь процедура будет выполняться с тем путём поиска, который используется вызывающей стороной.
Данная команда частично совместима с оператором ALTER PROCEDURE стандарта SQL. Стандарт позволяет изменять больше свойств процедуры, но не предусматривает возможность переименования процедуры, назначения ей статуса SECURITY DEFINER, привязки значений параметров конфигурации к процедуре или изменения владельца, схемы или степени волатильности процедуры. В стандарте также требуется ключевое слово RESTRICT, которое в Database является необязательным.