ALTER AGGREGATE
Синтаксис
ALTER AGGREGATE имя ( сигнатура_агр_функции ) RENAME TO новое_имя
ALTER AGGREGATE имя ( сигнатура_агр_функции ) OWNER TO новый_владелец
ALTER AGGREGATE имя ( сигнатура_агр_функции ) SET SCHEMA новая_схема
Здесь сигнатура_агр_функции:
* |
[ режим_аргумента ] [ имя_аргумента ] тип_аргумента [ , ... ] |
[ [ режим_аргумента ] [ имя_аргумента ] тип_аргумента [ , ... ] ] ORDER BY [ режим_аргумента ] [ имя_аргумента ] тип_аргумента [ , ... ]
Описание
ALTER AGGREGATE изменяет определение агрегатной функции.
Выполнить ALTER AGGREGATE может только владелец соответствующей агрегатной функции. Чтобы сменить схему агрегатной функции, необходимо также иметь право CREATE в новой схеме. Чтобы сменить владельца, требуется также быть непосредственным или опосредованным членом новой роли, а эта роль должна иметь право CREATE в схеме агрегатной функции. (С такими ограничениями при смене владельца не происходит ничего такого, что нельзя было бы сделать, имея право удалить и вновь создать агрегатную функцию. Однако суперпользователь может сменить владельца агрегатной функции в любом случае.)
Параметры
- имя
Имя (возможно, дополненное схемой) существующей агрегатной функции.
- режим_аргумента
Режим аргумента: IN или VARIADIC. По умолчанию подразумевается IN.
- имя_аргумента
Имя аргумента. Заметьте, что на самом деле ALTER AGGREGATE не обращает внимание на имена аргументов, так как для однозначной идентификации агрегатной функции достаточно только типов аргументов.
- тип_аргумента
Тип входных данных, с которыми работает агрегатная функция. Чтобы сослаться на агрегатную функцию без аргументов, укажите вместо списка аргументов *, а чтобы сослаться на сортирующую агрегатную функцию, добавьте ORDER BY между указаниями непосредственных и агрегируемых аргументов.
- новое_имя
Новое имя агрегатной функции.
- новый_владелец
Новый владелец агрегатной функции.
- новая_схема
Новая схема агрегатной функции.
Замечания
Если вы хотите сослаться на сортирующую агрегатную функцию, рекомендуется добавить 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;
Пред. | Начало | След. |
ABORT | Уровень выше | ALTER COLLATION |