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 }
         } [, ... ] )

Описание

Команда ALTER OPERATOR изменяет определение оператора.

Чтобы использовать команду ALTER OPERATOR, нужно быть владельцем соответствующего оператора. Для смены владельца нужно иметь возможность выполнять SET ROLE для новой роли-владельца, и эта роль должна иметь право CREATE в схеме оператора. (Эти ограничения направлены на то, чтобы при смене владельца не происходило ничего, что нельзя было бы сделать путем удаления и повторного создания оператора. Однако суперпользователь все равно может сменить владельца любого оператора.)


Параметры

имя

Имя существующего оператора (может быть дополнено схемой).

тип_слева

Тип данных левого операнда оператора; если у оператора нет левого операнда, напишите NONE.

тип_справа

Тип данных правого операнда оператора.

новый_владелец

Новый владелец оператора.

новая_схема

Новая схема для оператора.

процедура_ограничения

Функция оценки избирательности ограничения для этого оператора; чтобы удалить существующую функцию оценки избирательности, напишите NONE.

процедура_соединения

Функция оценки избирательности соединения для этого оператора; чтобы удалить существующую функцию оценки избирательности, напишите NONE.


Примеры

Смена владельца пользовательского оператора a @@ b для типа text:

ALTER OPERATOR @@ (text, text) OWNER TO joe;

Изменение функций оценки избирательности ограничения и соединения пользовательского оператора a && b для типа int[]:

ALTER OPERATOR && (_int4, _int4) SET (RESTRICT = _int_contsel, JOIN = _int_contjoinsel);

Совместимость

В стандарте SQL нет команды ALTER OPERATOR.


См. также

CREATE OPERATOR, DROP OPERATOR