支持的版本: 当前 (17) / 16 / 15 / 14 / 13
开发版本: 开发版
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0

ALTER OPERATOR

ALTER OPERATOR — 更改操作符的定义

概要

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

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

ALTER OPERATOR name ( { 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

表示此操作符可以支持归并连接。只能启用,不能禁用。

注意

有关更多信息,请参阅第 36.14 节第 36.15 节

由于交换符成对出现,它们互为对方的交换符,ALTER OPERATOR SET COMMUTATOR 也会将 com_op 的交换符设置为目标操作符。 同样,ALTER OPERATOR SET NEGATOR 也会将 neg_op 的否定符设置为目标操作符。 因此,您必须同时拥有交换符或否定符操作符以及目标操作符。

示例

更改类型为 text 的自定义操作符 a @@ b 的所有者

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

更改类型为 int[] 的自定义操作符 a && b 的限制和连接选择性估计器函数

ALTER OPERATOR && (int[], int[]) SET (RESTRICT = _int_contsel, JOIN = _int_contjoinsel);

&& 操作符标记为它自己的交换符

ALTER OPERATOR && (int[], int[]) SET (COMMUTATOR = &&);

兼容性

SQL 标准中没有 ALTER OPERATOR 语句。

提交更正

如果您在文档中发现任何不正确、与您特定功能的经验不符或需要进一步澄清的内容,请使用此表单报告文档问题。