ALTER OPERATOR — изменение определения оператора
ALTER OPERATORname( {left_type| NONE } ,right_type) OWNER TO {new_owner| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER OPERATORname( {left_type| NONE } ,right_type) SET SCHEMAnew_schemaALTER OPERATORname( {left_type| NONE } ,right_type) SET ( { RESTRICT = {res_proc| NONE } | JOIN = {join_proc| NONE } | COMMUTATOR =com_op| NEGATOR =neg_op| HASHES | MERGES } [, ... ] )
Команда ALTER OPERATOR изменяет определение оператора.
Чтобы использовать ALTER OPERATOR, вы должны быть владельцем оператора.
Чтобы изменить владельца, вы должны иметь возможность выполнить SET ROLE для
новой роли-владельца, и эта роль должна иметь право CREATE
в схеме оператора.
(Эти ограничения гарантируют, что изменение владельца не позволит сделать ничего такого,
что нельзя было бы сделать удалением и повторным созданием оператора.
Однако суперпользователь может изменить владельца любого оператора в любом случае.)
nameИмя (возможно, с указанием схемы) существующего оператора.
left_type
Тип данных левого операнда оператора; укажите
NONE, если оператор не имеет левого операнда.
right_typeТип данных правого операнда оператора.
new_ownerНовый владелец оператора.
new_schemaНовая схема для оператора.
res_procФункция оценки селективности по ограничению для данного оператора; укажите NONE для удаления существующей функции оценки селективности.
join_procФункция оценки селективности по соединению для данного оператора; укажите NONE для удаления существующей функции оценки селективности.
com_opКоммутатор данного оператора. Может быть изменён, только если у оператора ещё нет коммутатора.
neg_opНегатор данного оператора. Может быть изменён, только если у оператора ещё нет негатора.
HASHESУказывает, что данный оператор может поддерживать хеш-соединение. Может быть только включён, но не выключен.
MERGESУказывает, что данный оператор может поддерживать сортирующее соединение. Может быть только включён, но не выключен.
Дополнительную информацию см. в разделах Раздел 5.1.14 и Раздел 5.1.15.
Поскольку коммутаторы существуют парами, где каждый является коммутатором для другого,
команда ALTER OPERATOR SET COMMUTATOR также установит
коммутатором для оператора com_op
целевой оператор. Аналогично, команда ALTER OPERATOR SET
NEGATOR также установит негатором для
оператора neg_op целевой оператор.
Следовательно, вы должны владеть как целевым оператором, так и оператором-коммутатором или негатором.
Изменить владельца пользовательского оператора a @@ b для типа text:
ALTER OPERATOR @@ (text, text) OWNER TO joe;
Изменить функции оценки селективности по ограничению и по соединению для
пользовательского оператора a && b для
типа int[]:
ALTER OPERATOR && (int[], int[]) SET (RESTRICT = _int_contsel, JOIN = _int_contjoinsel);
Пометить оператор && как являющийся своим собственным
коммутатором:
ALTER OPERATOR && (int[], int[]) SET (COMMUTATOR = &&);
В стандарте SQL нет оператора ALTER OPERATOR.