Начало работы
Подключение
Тесты производительности
Развёртывание
Использование данных
Загрузка данных
Миграция данных
Запрос данных
Управление кластерами
Обновление
Глобальное обслуживание
Масштабирование
Мониторинг
Безопасность
Лучшие практики
Технические принципы
Типы данных
Хранилище
Исполняющий движок
Потоковая обработка (Domino)
MARS3 Индексы
Расширения
Расширенные функции
Расширенный запрос
Федеративные запросы
Grafana
Резервное копирование и восстановление
Аварийное восстановление
Руководство
Настройка производительности
Устранение неполадок
Инструменты
Параметры конфигурации
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 является необязательным.