Provided by:
manpages-zh_1.5-1_all 
NAME
SET TRANSACTION - 設置當前事務的特性
SYNOPSIS
SET TRANSACTION
[ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ]
SET SESSION CHARACTERISTICS AS TRANSACTION
[ ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } ] [ READ WRITE | READ ONLY ]
DESCRIPTIONyz
SET TRANSACTION 命令為當前事務設置特性。 它對後悸漕S有影響。 SET
SESSION CHARACTERISTICS 為一虓|話中的每茖]置預設的隔離級別。 SET
TRANSACTION 可以為一蚇W立的事務覆蓋上悸熙]置。
可用的事務特性是事務隔離級別和事務訪問模式(讀/寫或者只讀)。
事務的隔離級別決定一-
茖b同時存在其它並行運行的事務時它能夠看到什麼數據。
READ COMMITTED
一條語句只能看到在它開始之前的數據。這是預設。
SERIALIZABLE
當前的事務只能看到在這次事務第一條查詢或者-
蚹嚗琲獄y句執行之前的數據。
Tip: 提示: 說白了,serializable(可串行化)意味著兩-
茖N把數據庫保持在同一茠牯A, 就好像這兩-
茖O嚴格地按照先後順序執行地那樣。
事務隔離級別在事務中第一蚍稊改語句 (SELECT, INSERT, DELETE, UPDATE,
FETCH, COPY) 執行之後就不能再次設置。 參閱 Chapter 12 ``Concurrency
Control'' 獲取有關事務隔離級別和並發性控制的更多信息。
事務訪問模式決定事務是讀/寫還是只讀。讀/寫是預設。如果一
事務是只讀,而且寫入的表不是臨時表,那麼下悸 SQL
命令是不允許的:INSERT, UPDATE,DELETE,和 COPY TO; 而所有的
CREATE,ALTER,和 DROP 命令; COMMENT,GRANT,REVOKE, TRUNCATE;和
EXPLAIN ANALYZE 和EXECUTE 都不允許。這是一-
荌盲h次的只讀概念,它並不阻止對磁碟的寫入。
NOTES`N
會話的預設事務隔離級別也可以用命令
SET default_transaction_isolation = 'value'
以及在配置檔案裏設置。 參考 Section 16.4 ``Run-time Configuration''
獲取更多信息。
COMPATIBILITYe性
兩茤R令都在 SQL 標準裏定義了。SQL 裏的預設事務隔離級別是
SERIALIZABLE; 在 PostgreSQL 裏,預設隔離級別是 READ
COMMITED,但是你可以用上悸煽yz蚹鴷式C PostgreSQL 並沒有提供隔離級別
READ UNCOMMITTED 和 REPEATABLE READ。 因為多版本並發控制,SERIALIZABLE
級別並非真正的可串行化。參閱 Chapter 12 ``Concurrency Control''
獲取細節。
在 SQL 標準裏還有另外一種事務特性可以用這些命令設置:診斷-
S圍的大小。這虓妝壎u用於嵌入的 SQL。
者
Postgresql <laser@pgsqldb.org>