BEGIN(7)

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@pgsqldb.org>