Man page - create_sequence(7)
Manual
CREATE SEQUENCE
NAMESYNOPSIS
DESCRIPTION 描 述
PARAMETERS 引 數
NOTES 注 意
EXAMPLES 例 子
COMPATIBILITY 相 容 性
譯 者
跋
NAME
CREATE SEQUENCE - 建 立 一 個 新 的 序 列 發 生 器
SYNOPSIS
CREATE [
TEMPORARY | TEMP ] SEQUENCE
name
[ INCREMENT [ BY ]
increment
]
[ MINVALUE
minvalue
| NO MINVALUE ] [ MAXVALUE
maxvalue
| NO MAXVALUE ]
[ START [ WITH ]
start
] [ CACHE
cache
] [ [
NO ] CYCLE ]
DESCRIPTION 描 述
CREATE SEQUENCE 將 向 當 前 資 料 庫 裡 增 加 一 個 新 的 序 列 號 生 成 器 。 包 括 建 立 和 初 始 化 一 個 新 的 名 為 name的 單 行 表 。 生 成 器 將 為 使 用 此 命 令 的 使 用 者 所 有 。
如 果 給 出 了 一 個 模 式 名 , 那 麼 該 序 列 是 在 指 定 模 式 中 建 立 的 。 否 則 它 會 在 當 前 模 式 中 建 立 臨 時 序 列 存 在 於 一 個 特 殊 的 模 式 中 , 因 此 如 果 建 立 一 個 臨 時 序 列 的 時 候 , 不 能 給 出 模 式 名 。 序 列 名 必 需 和 同 一 模 式 中 的 其 他 序 列 , 表 , 索 引 , 或 者 檢 視 不 同 。
在 序 列 建 立 後 , 你 可 以 使 用 函 式 nextval , currval , 和 setval 操 作 序 列 。 這 些 函 式 在 ‘‘Sequence-Manipulation Functions’’ 中 有 詳 細 文 件 。
儘 管 你 不 能 直 接 更 新 一 個 序 列 , 但 你 可 以 使 用 象
SELECT * FROM name ;
檢 查 一 個 序 列 的 引 數 和 當 前 狀 態 。 特 別 是 序 列 的 last_value 欄 位 顯 示 了 任 意 後 端 程 序 分 配 的 最 後 的 數 值 。 ( 當 然 , 這 些 值 在 被 打 印 出 來 的 時 候 可 能 已 經 過 時 了 --- 如 果 其 它 程 序 正 積 極 地 使 用 nextval。 )
PARAMETERS 引 數
TEMPORARY or TEMP
如 果 聲 明 瞭 這 個 修 飾 詞 , 那 麼 該 序 列 物 件 只 為 這 個 會 話 建 立 , 並 且 在 會 話 結 束 的 時 候 自 動 刪 除 。 在 臨 時 序 列 存 在 的 時 候 , 同 名 永 久 序 列 是 不 可 見 的 ( 在 同 一 會 話 裡 ) , 除 非 它 們 是 用 模 式 修 飾 的 名 字 引 用 的 。
|
name |
將 要 建 立 的 序 列 號 名 ( 可 以 用 模 式 修 飾 ) 。
increment
INCREMENT BY increment 子 句 是 可 選 的 。 一 個 正 數 將 生 成 一 個 遞 增 的 序 列 , 一 個 負 數 將 生 成 一 個 遞 減 的 序 列 。 預 設 值 是 一 ( 1) 。
minvalue
NO MINVALUE
可 選 的 子 句 MINVALUE minvalue 決 定 一 個 序 列 可 生 成 的 最 小 值 。 如 果 沒 有 宣 告 這 個 子 句 或 者 聲 明 瞭 NO MINVALUE, 那 麼 就 使 用 預 設 。 預 設 分 別 是 遞 增 序 列 為 1 遞 減 為 -263-1。
maxvalue
NO MAXVALUE
使 用 可 選 子 句 MAXVALUE maxvalue 決 定 序 列 的 最 大 值 。 如 果 沒 有 宣 告 這 個 子 句 或 者 聲 明 瞭 NO MAXVALUE, 那 麼 就 使 用 預 設 。 預 設 的 分 別 是 遞 增 為 263-1, 遞 減 為 -1。
|
start |
可 選 的 START WITH start 子 句 使 序 列 可 以 從 任 意 位 置 開 始 。 預 設 初 始 值 是 遞 增 序 列 為 minvalue 遞 減 序 列 為 maxvalue.
|
cache |
CACHE cache 選 項 使 序 列 號 預 分 配 並 且 為 快 速 訪 問 儲 存 在 記 憶 體 裡 面 。 最 小 值 ( 也 是 預 設 值 ) 是 1( 一 次 只 能 生 成 一 個 值 , 也 就 是 說 沒 有 快 取 ) 這 也 是 預 設 。 |
|||
|
CYCLE |
NO CYCLE
可 選 的 CYCLE關 鍵 字 可 用 於 使 序 列 到 達 最 大 值 ( maxvalue) 或 最 小 值 ( minvalue) 時 可 復 位 並 繼 續 下 去 。 如 果 達 到 極 限 , 生 成 的 下 一 個 資 料 將 分 別 是 最 小 值 ( minvalue) 或 最 大 值 ( maxvalue) 。
如 果 聲 明 瞭 可 選 的 關 鍵 字 NO CYCLE, 那 麼 在 序 列 達 到 其 最 大 值 之 後 任 何 對 nextval 的 呼 叫 都 強 返 回 一 個 錯 誤 。 如 果 既 沒 有 宣 告 CYCLE 也 沒 有 宣 告 NO CYCLE, 那 麼 NO CYCLE 是 預 設 。
NOTES 注 意
使 用 DROP SEQUENCE 語 句 來 刪 除 序 列 。
序 列 是 基 於 bigint 運 算 的 , 因 此 其 範 圍 不 能 超 過 八 位 元 組 的 整 數 範 圍 ( -9223372036854775808 到 9223372036854775807) 。 在 一 些 老 一 點 的 平 臺 上 可 能 沒 有 對 八 位 元 組 整 數 的 編 譯 器 支 援 , 這 種 情 況 下 序 列 使 用 普 通 的 integer 運 算 ( 範 圍 是 -2147483648 到 +2147483647) 。
如 果 cache 設 定 大 於 一 , 並 且 這 個 序 列 物 件 將 被 用 於 併 發 多 會 話 的 場 合 , 那 麼 可 能 會 有 不 可 預 料 的 結 果 發 生 。 每 個 會 話 在 一 次 訪 問 序 列 物 件 的 過 程 中 將 分 配 並 快 取 隨 後 的 序 列 值 , 並 且 相 應 增 加 序 列 物 件 的 last_value。 這 樣 , 同 一 個 事 務 中 的 隨 後 的 cache-1 次 nextval 將 只 是 返 回 預 先 分 配 的 數 值 , 而 不 用 動 序 列 物 件 。 因 此 , 任 何 在 一 個 會 話 中 分 配 但 是 沒 有 使 用 的 數 字 都 將 在 會 話 結 尾 丟 失 , 導 致 序 列 裡 面 出 現 "空 洞 "。
另 外 , 儘 管 系 統 保 證 為 多 個 會 話 分 配 獨 立 的 序 列 值 , 但 是 如 果 考 慮 所 有 會 話 , 那 麼 這 個 數 值 可 能 會 丟 失 順 序 。 比 如 , 如 果 cache 設 定 為 10, 那 麼 會 話 A 保 留 了 1..10 並 且 返 回 nextval=1, 然 後 會 話 B 可 能 會 保 留 11..20 然 後 在 會 話 A 生 成 nextval=2 之 前 返 回 nextval=11。 因 此 , 對 於 cache 設 定 為 一 的 情 況 , 我 們 可 以 安 全 地 假 設 nextval 值 是 順 序 生 成 的 ; 而 如 果 把 cache 設 定 得 大 於 一 , 那 麼 你 只 能 假 設 nextval 值 總 是 唯 一 得 , 而 不 是 完 全 順 序 地 生 成 。 同 樣 , last_value 將 反 映 任 何 會 話 保 留 的 最 後 的 數 值 , 不 管 它 是 否 曾 被 nextval 返 回 。
另 外 一 個 考 慮 是 在 這 樣 的 序 列 上 執 行 的 setval 將 不 會 被 其 它 會 話 注 意 到 , 直 到 它 們 用 光 他 們 快 取 的 數 值 。
EXAMPLES 例 子
建 立 一 個 叫 serial 的 遞 增 序 列 , 從 101開 始 :
CREATE SEQUENCE serial START 101;
從 此 序 列 中 選 出 下 一 個 數 字 :
SELECT nextval(’serial’);
nextval
---------
114
在 一 個 INSERT 中 使 用 此 序 列 :
INSERT INTO distributors VALUES (nextval(’serial’), ’nothing’);
在 一 個 COPY FROM 後 更 新 序 列 :
BEGIN;
COPY distributors FROM ’input_file’;
SELECT setval(’serial’, max(id)) FROM
distributors;
END;
COMPATIBILITY 相 容 性
CREATE SEQUENCE 是 PostgreSQL 語 言 擴 充 套 件 。 在 SQL 標 準 裡 沒 有 CREATE SEQUENCE 語 句 。
譯 者
Postgresql 中 文 網 站 何 偉 平 <laser@pgsqldb.org>
跋
本
頁 面 中 文 版 由
中 文 man 手 冊 頁 計
劃 提 供 。
中 文 man 手 冊 頁 計
劃 :
https://github.com/man-pages-zh/manpages-zh