支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本: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 陳述式。

提交更正

如果您在文件中看到任何不正確、與您特定功能的經驗不符或需要進一步說明的地方,請使用此表單回報文件問題。