ALTER AGGREGATE
Эта страница переведена при помощи нейросети GigaChat.
ALTER AGGREGATE
– изменение определения агрегатной функции.
Синтаксис
ALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_name
ALTER AGGREGATE name ( aggregate_signature )
OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER AGGREGATE name ( aggregate_signature ) SET SCHEMA new_schema
where aggregate_signature is:
* |
[ argmode ] [ argname ] argtype [ , ... ] |
[ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]
Описание
ALTER AGGREGATE
изменяет определение агрегатной функции.
Необходимо владеть агрегатной функцией, чтобы использовать ALTER AGGREGATE
. Чтобы изменить схему агрегатной функции, также необходимо иметь привилегию CREATE
на новую схему. Для того чтобы изменить владельца, нужно иметь право SET ROLE
к новой роли-владельцу, а эта роль должна обладать привилегией CREATE
на схеме агрегатной функции. Эти ограничения обеспечивают невозможность выполнения чего-либо при изменении владельца, что нельзя было бы сделать путем удаления и повторного создания агрегатной функции. Однако суперпользователь может изменить владение любой агрегатной функцией независимо от этих ограничений.
Параметры
name
- Имя (необязательно уточненное схемой) существующей агрегатной функции.
argmode
- Режим аргумента:
IN
илиVARIADIC
. Если опущено, используется значение по умолчаниюIN
.
argname
- Имя аргумента. Обратите внимание, что
ALTER AGGREGATE
фактически не обращает внимания на имена аргументов, поскольку для определения идентичности агрегатной функции требуются только типы данных аргументов.
argtype
- Тип входных данных, над которым работает агрегатная функция. Чтобы сослаться на агрегатную функцию без аргументов, напишите
*
вместо списка спецификаций аргументов. Чтобы сослаться на упорядоченную агрегатную функцию набора, напишите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
.