BEGIN(7) | SQL Commands | BEGIN(7) |
BEGIN - 開始一個事務塊
BEGIN [ WORK | TRANSACTION ]
BEGIN 初始化一個事務塊, 也就是說所有 BEGIN 命令後的使用者語句都將在一個事務裡面執行直到給出一個明確的 COMMIT [commit(7)] 或者 ROLLBACK [rollback(l)] 。 預設時,(沒有 BEGIN),PostgreSQL 以 "autocommit" 模式執行事務,也就是說,每個語句在其自身的事務中執行, 並且在語句結束的時候隱含地執行一個提交(如果執行成功,否則執行回滾)。
在事務塊裡執行的語句很明顯地快得多,
因為事務開始/提交(start/commit)需要大量的CPU和磁碟活動。
在一個
事務內部執行多條語句對於修改若干個相關的表的時候也是很有用的:
在所有相關的更新完成之前,其它會話看不到中間的狀態。
START TRANSACTION [start_transaction(7)] 有著和 BEGIN 一樣的功能。
使用 COMMIT [commit(7)] 或 ROLLBACK
[rollback(7)]
結束一個事務。
在一個現有事務塊內部發出一個
BEGIN
將產生一個警告資訊。
事務的狀態將不會被影響。
開始一個使用者事務:
BEGIN;
BEGIN 是 PostgreSQL 語言的擴充套件。 在 SQL 標準中沒有明確的 BEGIN 的定義;事務初始化總是隱含的而且使用一個 COMMIT 或者 ROLLBACK 語句終止。
許多關係型資料庫為了方便提供一個自動提交(autocommit)特性。
順便說一句,BEGIN
關鍵字在嵌入 SQL
裡用於不同的目的。
我們建議你在移植資料庫應用時仔細檢查事務的語義。
COMMIT [commit(7)], ROLLBACK [rollback(l)]
Postgresql 中文網站 何偉平 <laser@pgsqldb.org>
本頁面中文版由中文
man 手冊頁計劃提供。
中文 man
手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
2003-11-02 | SQL - Language Statements |