| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]
這裡的 transaction_mode 是下列之一:
ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
READ WRITE | READ ONLYBEGIN 初始化一個交易, 也就是說所有 BEGIN 命令後的用戶語句都將在一個交易裡面執行直到給出一個明確的 COMMIT 或者 ROLLBACK。 預設時,(沒有 BEGIN),PostgreSQL 以 "autocommit" 模式執行交易,也就是說,每個語句在其自身的交易中執行, 並且在語句結束的時候隱含地執行一個提交(如果執行成功,否則執行回滾)。
在交易裡執行的語句很明顯地快得多, 因為交易開始/提交(start/commit)需要大量的CPU和磁盤活動。 在一個 交易內部執行多條語句對於修改若干個相關的資料表的時候也是很有用的: 在所有相關的更新完成之前,其它會話看不到中間的狀態。
如果聲明了隔離級別或者讀/寫模式,那麼新交易將具有那些特徵。就像執行了 SET TRANSACTION 一樣。
START TRANSACTION 有著和 BEGIN 一樣的功能。
在一個現有交易內部發出一個 BEGIN 將產生一個警告訊息。 交易的狀態將不會被影響。要想在一個交易裡嵌套交易,請使用保存點(savepoint) (參閱 SAVEPOINT)。
出於向下兼容考慮,在隨後的 transaction_modes 之間的逗號可以忽略。