CREATE OPERATOR(7) | SQL Commands | CREATE OPERATOR(7) |
CREATE OPERATOR - 定義一個新的運算子
CREATE OPERATOR name ( PROCEDURE = funcname [, LEFTARG = lefttype ] [, RIGHTARG = righttype ] [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ] [, RESTRICT = res_proc ] [, JOIN = join_proc ] [, HASHES ] [, MERGES ] [, SORT1 = left_sort_op ] [, SORT2 = right_sort_op ] [, LTCMP = less_than_op ] [, GTCMP = greater_than_op ] )
CREATE OPERATOR 定義一個新的運算子, name。 定義該運算子的使用者成為其所有者。如果給出了一個模式名,那麼該運算子將在指定的模式中建立。 否則它會在當前模式中建立。
運算子 name
是一個最多NAMEDATALEN-1
長的(預設為 63
個)下列字元組成的字串:
+ - * / < > = ~ ! @ # % ^ & | ` ?
~ ! @ # % ^ & | ` ?
運算子 !=
在輸入時對映成 <>,
因此這兩個名稱總是相等的。
至少需要定義一個LEFTARG或RIGHTARG。
對於雙目運算子來說,兩者都需要定義。
對右目運算子來說,只需要定義LEFTARG,
而對於左目運算子來說,只需要定義RIGHTARG。
同樣,funcname
過程必須已經用 CREATE FUNCTION
定義過,
而且必須定義為接受正確數量的指定型別引數(一個或是兩個)。
其它子句宣告可選的運算子最佳化子句。他們的含義在
``User-Defined Operators'' 裡定義。
要在 com_op
或者其它可選引數裡給出一個模式修飾的運算子名,使用
OPERATOR() 語法,比如
COMMUTATOR = OPERATOR(myschema.===) ,
請參閱 ``User-Defined Operators'' 中運算子章節獲取更多資訊。
請使用 DROP OPERATOR
從資料庫中刪除使用者定義運算子。
下面命令定義一個新運算子,面積相等,用於 box 資料型別。
CREATE OPERATOR === ( LEFTARG = box, RIGHTARG = box, PROCEDURE = area_equal_procedure, COMMUTATOR = ===, NEGATOR = !==, RESTRICT = area_restriction_procedure, JOIN = area_join_procedure, HASHES, SORT1 = <<<, SORT2 = <<< -- 因為給出了排序運算子,索引隱含地有 MERGES。 -- LTCMP 和 GTCMP 分別假設是 < 和 > );
CREATE OPERATOR 是 PostgreSQL 擴充套件。 在SQL標準中沒有 CREATE OPERATOR 語句。
Postgresql 中文網站 何偉平 <laser@pgsqldb.org>
本頁面中文版由中文
man 手冊頁計劃提供。
中文 man
手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
2003-11-02 | SQL - Language Statements |