NAME
BEGIN - 開 始 一 個 事 務 塊
SYNOPSIS
BEGIN [ WORK | TRANSACTION ]
DESCRIPTION 描 述
BEGIN 初 始 化 一 個 事 務 塊 , 也 就 是 說 所 有 BEGIN 命 令 後 的 用 戶 語 句 都 將 在 一 個 事 務 裏 面 執 行 直 到 給 出 一 個 明 確 的 COMMIT [commit(7)] 或 者 ROLLBACK [rollback(l)] 。 缺 省 時 , ( 沒 有 BEGIN) , PostgreSQL 以 "autocommit" 模 式 執 行 事 務 , 也 就 是 說 , 每 個 語 句 在 其 自 身 的 事 務 中 執 行 , 並 且 在 語 句 結 束 的 時 候 隱 含 地 執 行 一 個 提 交 ( 如 果 執 行 成 功 , 否 則 執 行 回 滾 ) 。 在 事 務 塊 裏 執 行 的 語 句 很 明 顯 地 快 得 多 , 因 爲 事 務 開 始 /提 交 ( start/commit) 需 要 大 量 的 CPU和 磁 盤 活 動 。 在 一 個 事 務 內 部 執 行 多 條 語 句 對 於 修 改 若 干 個 相 關 的 表 的 時 候 也 是 很 有 用 的 : 在 所 有 相 關 的 更 新 完 成 之 前 , 其 它 會 話 看 不 到 中 間 的 狀 態 。
PARAMETERS 參 數
WORK |
TRANSACTION 可 選 關 鍵 字 。 沒 什 麼 作 用 。
NOTES 注 意
START TRANSACTION [start_transaction(7)] 有 着 和 BEGIN 一 樣 的 功 能 。 使 用 COMMIT [commit(7)] 或 ROLLBACK [rollback(7)] 結 束 一 個 事 務 。 在 一 個 現 有 事 務 塊 內 部 發 出 一 個 BEGIN 將 產 生 一 個 警 告 信 息 。 事 務 的 狀 態 將 不 會 被 影 響 。
EXAMPLES 例 子
開 始 一 個 用 戶 事 務 :
BEGIN;
COMPATIBILITY 兼 容 性
BEGIN 是 PostgreSQL 語 言 的 擴 展 。 在 SQL 標 準 中 沒 有 明 確 的 BEGIN 的 定 義 ; 事 務 初 始 化 總 是 隱 含 的 而 且 使 用 一 個 COMMIT 或 者 ROLLBACK 語 句 終 止 。 許 多 關 係 型 數 據 庫 爲 了 方 便 提 供 一 個 自 動 提 交 ( autocommit) 特 性 。 順 便 說 一 句 , BEGIN 關 鍵 字 在 嵌 入 SQL 裏 用 於 不 同 的 目 的 。 我 們 建 議 你 在 移 植 數 據 庫 應 用 時 仔 細 檢 查 事 務 的 語 義 。
SEE ALSO 參 見
COMMIT [commit(7)], ROLLBACK [rollback(l)]
譯 者
Postgresql 中 文 網 站 何 偉 平 <laser [AT] pgsqldb.org>
跋
本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh