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 |
Режим аргумента: |
argname |
Имя аргумента.
Обратите внимание, что |
argtype |
Входной тип данных, с которым работает агрегатная функция.
Чтобы сослаться на агрегатную функцию без аргументов, укажите |
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.