ALTER OPERATOR
ALTER OPERATOR — изменить определение оператора
Синтаксис
ALTER OPERATORимя( {тип_слева| NONE } ,тип_справа) OWNER TO {новый_владелец| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER OPERATORимя( {тип_слева| NONE } ,тип_справа) SET SCHEMAновая_схемаALTER OPERATORимя( {тип_слева| NONE } ,тип_справа) SET ( { RESTRICT = {процедура_ограничения| NONE } | JOIN = {процедура_соединения| NONE } | COMMUTATOR =коммут_оператор| NEGATOR =обратный_оператор| HASHES | MERGES } [, ... ] )
Описание
ALTER OPERATOR изменяет определение оператора.
Выполнить ALTER OPERATOR может только владелец соответствующего оператора. Чтобы сменить владельца, необходимо иметь право SET ROLE для новой роли-владельца, а эта роль должна иметь право CREATE в схеме оператора. (С такими ограничениями при смене владельца не происходит ничего такого, что нельзя было бы сделать, имея право удалить и вновь создать оператор. Однако суперпользователь может сменить владельца оператора в любом случае.)
Параметры
- имя
- Имя существующего оператора (возможно, дополненное схемой). 
- тип_слева
- Тип данных левого операнда оператора; если у оператора нет левого операнда, укажите - NONE.
- тип_справа
- Тип данных правого операнда оператора. 
- новый_владелец
- Новый владелец оператора. 
- новая_схема
- Новая схема оператора. 
- процедура_ограничения
- Функция оценки избирательности ограничения для данного оператора; значение NONE удаляет существующую функцию оценки. 
- процедура_соединения
- Функция оценки избирательности соединения для этого оператора; значение NONE удаляет существующую функцию оценки. 
- коммут_оператор
- Оператор, коммутирующий для данного. Можно изменить, только если у данного оператора коммутирующий отсутствует. 
- обратный_оператор
- Оператор, обратный к данному. Можно изменить, только если у данного оператора обратный отсутствует. 
- HASHES
- Показывает, что этот оператор поддерживает соединение по хешу. Можно только включить, но не отключить. 
- MERGES
- Показывает, что этот оператор поддерживает соединение слиянием. Можно только включить, но не отключить. 
Примечания
Более подробно информация описана в Разделе 36.14 и Разделе 36.15.
Поскольку коммутирующие операторы связаны парами и являются коммутирующими друг для друга, команда ALTER OPERATOR SET COMMUTATOR также назначит данный оператор коммутирующим для оператора из параметра коммут_оператор. Аналогично команда ALTER OPERATOR SET NEGATOR назначит данный оператор обратным для оператора из параметра обратный_оператор. Таким образом, для выполнения команды необходимо являться владельцем и данного оператора, и назначаемого коммутирующего или обратного оператора.
Примеры
Смена владельца нестандартного оператора 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 = &&);
Совместимость
Команда ALTER OPERATOR отсутствует в стандарте SQL.