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 |