Manpages

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