BEGIN 中文man頁面
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)]
#p#
NAME
BEGIN - start a transaction block
SYNOPSIS
BEGIN [ WORK | TRANSACTION ]
DESCRIPTION
BEGIN initiates a transaction block, that is, all statements after BEGIN command will be executed in a single transaction until an explicit COMMIT [commit(7)] or ROLLBACK [rollback(l)] is given. By default (without BEGIN), PostgreSQL executes transactions in ``autocommit'' mode, that is, each statement is executed in its own transaction and a commit is implicitly performed at the end of the statement (if execution was successful, otherwise a rollback is done).
Statements are executed more quickly in a transaction block, because transaction start/commit requires significant CPU and disk activity. Execution of multiple statements inside a transaction is also useful to ensure consistency when making several related changes: other sessions will be unable to see the intermediate states wherein not all the related updates have been done.
PARAMETERS
- WORK
- TRANSACTION
- Optional key words. They have no effect.
NOTES
START TRANSACTION [start_transaction(7)] has the same functionality as BEGIN.
Use COMMIT [commit(7)] or ROLLBACK [rollback(7)] to terminate a transaction block.
Issuing BEGIN when already inside a transaction block will provoke a warning message. The state of the transaction is not affected.
EXAMPLES
To begin a transaction block:
BEGIN;
COMPATIBILITY
BEGIN is a PostgreSQL language extension. There is no explicit BEGIN command in the SQL standard; transaction initiation is always implicit and it terminates either with a COMMIT or ROLLBACK statement.
Other relational database systems may offer an autocommit feature as a convenience.
Incidentally, the BEGIN key word is used for a different purpose in embedded SQL. You are advised to be careful about the transaction semantics when porting database applications.
SEE ALSO
COMMIT [commit(7)], ROLLBACK [rollback(l)]

















