Man page - create_operator(7)
Manual
CREATE OPERATOR
NAMESYNOPSIS
DESCRIPTION 描 述
PARAMETERS 引 數
NOTES 注 意
EXAMPLES 例 子
COMPATIBILITY 相 容 性
譯 者
跋
NAME
CREATE OPERATOR - 定 義 一 個 新 的 運 算 子
SYNOPSIS
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
]
)
DESCRIPTION 描 述
CREATE OPERATOR 定 義 一 個 新 的 運 算 子 , name。 定 義 該 運 算 子 的 使 用 者 成 為 其 所 有 者 。 如 果 給 出 了 一 個 模 式 名 , 那 麼 該 運 算 子 將 在 指 定 的 模 式 中 建 立 。 否 則 它 會 在 當 前 模 式 中 建 立 。
運 算 子 name 是 一 個 最 多 NAMEDATALEN-1 長 的 ( 預 設 為 63 個 ) 下 列 字 元 組 成 的 字 串 :
+ - * / < > = ˜ ! @ # % ˆ & | ‘ ?
你 選 擇 名 字 的 時 候 有 幾 個 限 制 :
|
• |
-- 和 /* 不 能 在 運 算 子 名 字 的 任 何 地 方 出 現 , 因 為 它 們 會 被 認 為 是 一 個 註 釋 的 開 始 。 |
|||
|
• |
一 個 多 字 元 的 運 算 子 名 字 不 能 以 + 或 - 結 尾 , 除 非 該 名 字 還 包 含 至 少 下 面 字 元 之 一 :
˜ ! @ # % ˆ & | ‘ ?
例 如 , @- 是 一 個 允 許 的 運 算 子 名 , 但 *- 不 是 。 這 個 限 制 允 許 PostgreSQL 分 析 SQL-有 問 題 的 查 詢 而 不 要 求 在 符 號 之 間 有 空 白 。
運 算 子 != 在 輸 入 時 對 映 成 <>, 因 此 這 兩 個 名 稱 總 是 相 等 的 。
至 少 需 要 定 義 一 個 LEFTARG或 RIGHTARG。 對 於 雙 目 運 算 子 來 說 , 兩 者 都 需 要 定 義 。 對 右 目 運 算 子 來 說 , 只 需 要 定 義 LEFTARG, 而 對 於 左 目 運 算 子 來 說 , 只 需 要 定 義 RIGHTARG。
同 樣 , funcname 過 程 必 須 已 經 用 CREATE FUNCTION 定 義 過 , 而 且 必 須 定 義 為 接 受 正 確 數 量 的 指 定 型 別 引 數 ( 一 個 或 是 兩 個 ) 。
其 它 子 句 宣 告 可 選 的 運 算 子 最 佳 化 子 句 。 他 們 的 含 義 在 ‘‘User-Defined Operators’’ 裡 定 義 。
PARAMETERS 引 數
|
name |
要 定 義 的 運 算 子 名 字 。 可 用 的 字 元 見 上 文 。 其 名 字 可 以 用 模 式 修 飾 , 比 如 CREATE OPERATOR myschema.+ (...)。 如 果 沒 有 模 式 , 則 在 當 前 模 式 中 建 立 運 算 子 。 同 一 個 模 式 中 的 兩 個 運 算 子 可 以 有 一 樣 的 名 字 , 只 要 他 們 操 作 不 同 的 資 料 型 別 。 這 叫 做 過 載 。
funcname
用 於 實 現 該 運 算 子 的 函 式 。
lefttype
如 果 存 在 的 話 , 運 算 子 左 手 邊 的 引 數 型 別 。 如 果 是 左 目 運 算 子 , 這 個 引 數 可 以 省 略 。
righttype
如 果 存 在 的 話 , 運 算 子 右 手 邊 的 引 數 型 別 。 如 果 是 右 目 運 算 子 , 這 個 引 數 可 以 省 略 。
|
com_op |
該 運 算 子 對 應 的 交 換 ( commutator) 運 算 子 。
|
neg_op |
對 應 的 負 運 算 子 。
res_proc
此 運 算 子 約 束 選 擇 性 計 算 函 式 。
join_proc
此 運 算 子 連 線 選 擇 性 計 算 函 式 。
|
HASHES |
表 明 此 運 算 子 支 援 雜 湊 ( 雜 湊 ) 連 線 。
|
MERGES |
表 明 此 運 算 子 可 以 支 援 一 個 融 合 連 線 。
left_sort_op
如 果 此 運 算 子 支 援 融 合 連 線 ( join) , 此 運 算 子 的 左 手 邊 資 料 的 排 序 運 算 子 。
right_sort_op
如 果 此 運 算 子 支 援 融 合 連 線 ( join) , 此 運 算 子 的 右 手 邊 資 料 的 排 序 運 算 子 。
less_than_op
如 果 這 個 運 算 子 可 以 支 援 融 合 連 線 , 那 麼 這 就 是 比 較 這 個 運 算 子 的 輸 入 資 料 型 別 的 小 於 運 算 子 。
greater_than_op
如 果 這 個 運 算 子 不 支 援 融 合 連 線 , 那 麼 這 就 是 比 較 輸 入 這 個 運 算 子 的 資 料 型 別 的 大 於 運 算 子 。
要 在 com_op 或 者 其 它 可 選 引 數 裡 給 出 一 個 模 式 修 飾 的 運 算 子 名 , 使 用 OPERATOR() 語 法 , 比 如
COMMUTATOR = OPERATOR(myschema.===) ,
NOTES 注 意
請 參 閱 ‘‘User-Defined Operators’’ 中 運 算 子 章 節 獲 取 更 多 資 訊 。
請 使 用 DROP OPERATOR 從 資 料 庫 中 刪 除 使 用 者 定 義 運 算 子 。
EXAMPLES 例 子
下 面 命 令 定 義 一 個 新 運 算 子 , 面 積 相 等 , 用 於 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 分 別 假 設
是 < 和 >
);
COMPATIBILITY 相 容 性
CREATE OPERATOR 是 PostgreSQL 擴 充 套 件 。 在 SQL標 準 中 沒 有 CREATE OPERATOR 語 句 。
譯 者
Postgresql 中 文 網 站 何 偉 平 <laser@pgsqldb.org>
跋
本
頁 面 中 文 版 由
中 文 man 手 冊 頁 計
劃 提 供 。
中 文 man 手 冊 頁 計
劃 :
https://github.com/man-pages-zh/manpages-zh