ALTER AGGREGATE#
ALTER AGGREGATE
ALTER AGGREGATE — изменить определение агрегатной функции
Синтаксис
ALTER AGGREGATEname
(aggregate_signature
) RENAME TOnew_name
ALTER AGGREGATEname
(aggregate_signature
) OWNER TO {new_owner
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER AGGREGATEname
(aggregate_signature
) SET SCHEMAnew_schema
whereaggregate_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
.