Привет, Я DocuDroid!
Оценка ИИ поиска
Спасибо за оценку нашего ИИ поиска!
Мы будем признательны, если вы поделитесь своими впечатлениями, чтобы мы могли улучшить наш ИИ поиск для вас и других читателей.
GitHub

ALTER AGGREGATE

Изменяет определение агрегатной функции.

Синтаксис

ALTER AGGREGATE <name> ( <aggregate_signature> )  RENAME TO <new_name>

ALTER AGGREGATE <name> ( <aggregate_signature> ) OWNER TO <new_owner>

ALTER AGGREGATE <name> ( <aggregate_signature> ) SET SCHEMA <new_schema>

где aggregate_signature может принимать следующие значения:

* |
[ <argmode> ] [ <argname> ] <argtype> [ , ... ] |
[ [ <argmode> ] [ <argname> ] <argtype> [ , ... ] ] ORDER BY [ <argmode> ] [ <argname> ] <argtype> [ , ... ]

Описание

Команда ALTER AGGREGATE изменяет определение агрегатной функции.

Необходимо быть владельцем соответствующей агрегатной функции, чтобы выполнить ALTER AGGREGATE. Для изменения схемы агрегатной функции необходимо также иметь право CREATE в новой схеме. Чтобы сменить владельца, необходимо также быть прямым или косвенным членом новой роли-владельца, и эта роль должна иметь право CREATE в схеме агрегатной функции. Такие ограничения гарантируют, что смена владельца не позволит сделать ничего, что нельзя было бы сделать путем удаления и повторного создания агрегатной функции. Однако суперпользователь может изменить владельца любой агрегатной функции в любом случае.

Параметры

Параметр Описание

name

Имя (опционально указанное со схемой) существующей агрегатной функции

argmode

Режим аргумента: IN или VARIADIC. Если опущен, по умолчанию используется IN

argname

Имя аргумента. Обратите внимание, что ALTER AGGREGATE на самом деле не учитывает имена аргументов, так как для определения идентичности агрегатной функции требуются только типы данных аргументов

argtype

Входной тип данных, с которым работает агрегатная функция. Чтобы сослаться на агрегатную функцию без аргументов, укажите * вместо списка спецификаций аргументов. Чтобы сослаться на агрегатную функцию с упорядоченным набором (ordered-set), укажите ORDER BY между спецификациями прямых и агрегируемых аргументов

new_name

Новое имя агрегатной функции

new_owner

Новый владелец агрегатной функции

new_schema

Новая схема для агрегатной функции

Примечания

Рекомендуемый синтаксис для ссылки на агрегатную функцию с упорядоченным набором — указать ORDER BY между спецификациями прямых и агрегируемых аргументов, в том же стиле, что и в CREATE AGGREGATE. Тем не менее можно опустить ORDER BY и просто перечислить спецификации прямых и агрегируемых аргументов в едином списке. В этой сокращенной форме, если VARIADIC "any" использовался как в списке прямых, так и в списке агрегируемых аргументов, напишите VARIADIC "any" только один раз.

Примеры

Переименование агрегатной функции myavg с типом integer в my_average:

ALTER AGGREGATE myavg(integer) RENAME TO my_average;

Смена владельца агрегатной функции myavg с типом integer на joe:

ALTER AGGREGATE myavg(integer) OWNER TO joe;

Перемещение агрегатной функции с упорядоченным набором mypercentile с прямым аргументом типа float8 и агрегируемым аргументом типа integer в схему myschema:

ALTER AGGREGATE mypercentile(float8 ORDER BY integer) SET SCHEMA myschema;

Также сработает:

ALTER AGGREGATE mypercentile(float8, integer) SET SCHEMA myschema;

Совместимость

В стандарте SQL нет команды ALTER AGGREGATE.

См. также