table of contents
SET TRANSACTION(7) | SQL Commands | SET TRANSACTION(7) |
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 ]
DESCRIPTION 描述¶
SET TRANSACTION 命令為當前事務設定特性。 它對後面的事務沒有影響。 SET SESSION CHARACTERISTICS 為一個會話中的每個事務設定預設的隔離級別。 SET TRANSACTION 可以為一個獨立的事務覆蓋上面的設定。
可用的事務特性是事務隔離級別和事務訪問模式(讀/寫或者只讀)。
事務的隔離級別決定一個事務在同時存在其它並行執行的事務時它能夠看到什麼資料。
- READ COMMITTED
-
一條語句只能看到在它開始之前的資料。這是預設。 - SERIALIZABLE
-
當前的事務只能看到在這次事務第一條查詢或者修改資料的語句執行之前的資料。
事務隔離級別在事務中第一個資料修改語句
(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
都不允許。這是一個高層次的只讀概念,它並不阻止對磁碟的寫入。
NOTES 注意¶
會話的預設事務隔離級別也可以用命令
SET default_transaction_isolation = 'value'
以及在配置檔案裡設定。 參考 Section 16.4 ``Run-time Configuration'' 獲取更多資訊。
COMPATIBILITY 相容性¶
兩個命令都在 SQL 標準裡定義了。SQL 裡的預設事務隔離級別是 SERIALIZABLE; 在 PostgreSQL 裡,預設隔離級別是 READ COMMITED,但是你可以用上面的描述修改它。 PostgreSQL 並沒有提供隔離級別 READ UNCOMMITTED 和 REPEATABLE READ。 因為多版本併發控制,SERIALIZABLE 級別並非真正的可序列化。參閱 Chapter 12 ``Concurrency Control'' 獲取細節。
在 SQL
標準裡還有另外一種事務特性可以用這些命令設定:診斷範圍的大小。這個概念只用於嵌入的
SQL。
譯者¶
Postgresql 中文網站 何偉平 <laser@pgsqldb.org>
跋¶
本頁面中文版由中文
man 手冊頁計劃提供。
中文 man
手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
2003-11-02 | SQL - Language Statements |