ALTER EXTENSION
ALTER EXTENSION — изменить определение расширения
Синтаксис
ALTER EXTENSIONимяUPDATE [ TOновая_версия] ALTER EXTENSIONимяSET SCHEMAновая_схемаALTER EXTENSIONимяADDэлемент_объектALTER EXTENSIONимяDROPэлемент_объектЗдесьэлемент_объект: ACCESS METHODимя_объекта| AGGREGATEимя_агрегатной_функции(сигнатура_агр_функции) | CAST (исходный_типASцелевой_тип) | COLLATIONимя_объекта| CONVERSIONимя_объекта| DOMAINимя_объекта| EVENT TRIGGERимя_объекта| FOREIGN DATA WRAPPERимя_объекта| FOREIGN TABLEимя_объекта| FUNCTIONимя_функции( [ [режим_аргумента] [имя_аргумента]тип_аргумента[, ...] ] ) | MATERIALIZED VIEWимя_объекта| OPERATORимя_оператора(тип_слева,тип_справа) | OPERATOR CLASSимя_объектаUSINGиндексный_метод| OPERATOR FAMILYимя_объектаUSINGиндексный_метод| [ PROCEDURAL ] LANGUAGEимя_объекта| SCHEMAимя_объекта| SEQUENCEимя_объекта| SERVERимя_объекта| TABLEимя_объекта| TEXT SEARCH CONFIGURATIONимя_объекта| TEXT SEARCH DICTIONARYимя_объекта| TEXT SEARCH PARSERимя_объекта| TEXT SEARCH TEMPLATEимя_объекта| TRANSFORM FORимя_типаLANGUAGEимя_языка| TYPEимя_объекта| VIEWимя_объектаисигнатура_агр_функции: * | [режим_аргумента] [имя_аргумента]тип_аргумента[ , ... ] | [ [режим_аргумента] [имя_аргумента]тип_аргумента[ , ... ] ] ORDER BY [режим_аргумента] [имя_аргумента]тип_аргумента[ , ... ]
Описание
ALTER EXTENSION изменяет определение установленного расширения. Эта команда имеет несколько подвидов: 
- UPDATE
- Эта форма обновляет версию расширения. Расширение должно предоставлять подходящий скрипт обновления (или набор скриптов), который может сменить текущую установленную версию на требуемую. 
- SET SCHEMA
- Эта форма переносит объекты расширения в другую схему. Чтобы эта команда выполнилась успешно, расширение должно быть перемещаемым. 
- ADD- элемент_объект
- Эта форма добавляет существующий объект в расширение. В основном это применяется в скриптах обновления расширений. Добавленный объект затем будет считаться частью расширения, и удалить его можно будет, только удалив расширение. 
- DROP- элемент_объект
- Эта форма удаляет из расширения включённый в него объект. В основном это применяется в скриптах обновления расширений. Сам объект при этом не уничтожается, а только отделяется от расширения. 
Подробнее эти операции описаны в Разделе 34.15.
Чтобы выполнить команду ALTER EXTENSION, необходимо быть владельцем данного расширения. Для форм ADD/DROP требуется также быть владельцем добавляемого/удаляемого объекта.
Параметры
- имя
- Имя установленного расширения. 
- новая_версия
- Запрашиваемая новая версия расширения. Её можно записать в виде идентификатора или строкового значения. Если она не указана, - ALTER EXTENSION UPDATEпытается выполнить обновление до версии, указанной в качестве версии по умолчанию в управляющем файле расширения.
- новая_схема
- Новая схема расширения. 
- имя_объекта- имя_агрегатной_функции- имя_функции- имя_оператора
- Имя объекта, добавляемого или удаляемого из расширения. Имена таблиц, агрегатных функций, доменов, сторонних таблиц, функций, операторов, классов операторов, семейств операторов, последовательностей, объектов текстового поиска, типов и представлений можно дополнить именем схемы. 
- исходный_тип
- Имя исходного типа данных для приведения. 
- целевой_тип
- Имя целевого типа данных для приведения. 
- режим_аргумента
- Режим аргумента обычной или агрегатной функции: - IN,- OUT,- INOUTили- VARIADIC. По умолчанию подразумевается- IN. Заметьте, что- ALTER EXTENSIONне учитывает аргументы- OUT, так как для идентификации функции нужны только типы входных аргументов. Поэтому достаточно перечислить только аргументы- IN,- INOUTи- VARIADIC.
- имя_аргумента
- Имя аргумента обычной или агрегатной функции. Заметьте, что на самом деле - ALTER EXTENSIONне обращает внимание на имена аргументов, так как для однозначной идентификации функции достаточно только типов аргументов.
- тип_аргумента
- Тип данных аргумента обычной или агрегатной функции. 
- тип_слева- тип_справа
- Тип данных аргументов оператора (возможно, дополненный именем схемы). В случае отсутствия аргумента префиксного или постфиксного оператора укажите вместо типа - NONE.
- PROCEDURAL
- Это слово не несёт смысловой нагрузки. 
- имя_типа
- Имя типа данных, для которого предназначена трансформация. 
- имя_языка
- Имя языка, для которого предназначена трансформация. 
Примеры
Обновление расширения hstore до версии 2.0: 
ALTER EXTENSION hstore UPDATE TO '2.0';
Смена схемы расширения hstore на utils: 
ALTER EXTENSION hstore SET SCHEMA utils;
Добавление существующей функции в расширение hstore: 
ALTER EXTENSION hstore ADD FUNCTION populate_record(anyelement, hstore);
Совместимость
Оператор ALTER EXTENSION является расширением Postgres Pro.