ALTER OPERATOR

更改一个操作符的定义

概要

ALTER OPERATOR <name> ( {<left_type> | NONE} , {<right_type> | NONE} ) 
   OWNER TO { <new_owner> | CURRENT_USER | SESSION_USER }

ALTER OPERATOR <name> ( {<left_type> | NONE} , {<right_type> | NONE} ) 
    SET SCHEMA <new_schema>

ALTER OPERATOR name ( { <left_type> | NONE } , { <right_type> | NONE } )
    SET ( {  RESTRICT = { <res_proc> | NONE }
           | JOIN = { <join_proc> | NONE }
         } [, ... ] )

描述

ALTER OPERATOR 用于更改运算符的定义。

使用 ALTER OPERATOR 时,您必须是该运算符的所有者。若要更改所有者,您还必须是新所有者角色的直接或间接成员,且该角色必须对运算符所属模式拥有 CREATE 权限。(这些限制确保更改所有者不会执行任何无法通过删除并重新创建运算符实现的操作。但超级用户仍可更改任何运算符的所有权。)

参数

  • name
    • 一个现有操作符的名称(可以是模式限定的)。
  • left_type
    • 该操作符左操作数的数据类型,如果该操作符没有左操作数可以写成 NONE。
  • right_type
    • 该操作符右操作数的数据类型,如果该操作符没有右操作数可以写成 NONE。
  • new_owner
    • 该操作符的新拥有者。
  • new_schema
    • 该操作符的新模式。
  • res_proc
    • 这个操作符的约束选择度估算器函数,写成 NONE 可以移除现有的选择度估算器。
  • join_proc
    • 这个操作符的连接选择度估算器函数,写成 NONE 可以移除现有的选择度估算器。

示例

更改类型 text 的一个自定义操作符 a @@ b 的拥有者:

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

更改类型 int[] 的自定义操作符 a && b 的约束和连接选择度估算器函数:

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

兼容性

在 SQL 标准中没有 ALTER OPERATOR 语句。

另见

CREATE OPERATOR, DROP OPERATOR