Provided by: manpages-zh_1.6.3.2-1_all bug

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
               當前的事務只能看到在這次事務第一條查詢或者修改數據的語句執行之前的數據。

              Tip:  提示:  說白了,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