<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # PREPARE TRANSACTION ## Name PREPARE TRANSACTION?--?為當前事務做兩階段提交的準備 ## Synopsis ``` PREPARE TRANSACTION _transaction_id_ ``` ## 描述 `PREPARE TRANSACTION`為當前事務的兩階段提交做準備。在命令之后, 事務就不再和當前會話關聯了;它的狀態完全保存在磁盤上,它被提交成功的可能性非常高, 即使是在請求提交之前數據庫發生了崩潰也如此。 一旦準備好了,一個事務就可以在稍后用[COMMIT PREPARED](#calibre_link-901)或 [ROLLBACK PREPARED](#calibre_link-904)命令分別進行提交或者回滾。 這些命令可以從任何會話中發出,而不光是最初執行事務的那個會話。 從發出命令的會話的角度來看,`PREPARE TRANSACTION`不同于`ROLLBACK`: 在執行它之后,就不再有活躍的當前事務了,并且預備事務的效果無法見到 (在事務提交的時候其效果會再次可見)。 如果`PREPARE TRANSACTION`因為某些原因失敗, 那么它就會變成一個`ROLLBACK`,當前事務被取消。 ## 參數 `_transaction_id_` 一個任意的標識符,用于后面在`COMMIT PREPARED`或`ROLLBACK PREPARED` 的時候標識這個事務。這個標識符必須以字符串文本的方式書寫,并且必須小于 200 字節長。 它不能和任何當前預備事務已經使用了的標識符同名。 ## 注意 `PREPARE TRANSACTION`不是為了在應用或交互會話中使用。 它的目的是允許外部的事務管理器實現多個數據庫或者與其他事務源實現原子的全局事務。 除非你寫一個事務管理器,否則你不應該使用`PREPARE TRANSACTION`。 這條命令必須在一個事務塊里面使用。用[BEGIN](#calibre_link-493)開始一個事務。 目前,不允許對那些執行了涉及臨時表,或者是創建了帶`WITH HOLD`游標, 或者執行了`LISTEN`或`UNLISTEN`的事務進行`PREPARE`。 這些特性和當前會話綁定得實在是太緊密了,因此在一個預備事務里沒什么可用的。 如果事務用`SET`(沒有`LOCAL`選項)修改了運行時參數, 這些效果在`PREPARE TRANSACTION`之后保留,并且不會被任何以后的 `COMMIT PREPARED`或`ROLLBACK PREPARED`所影響。 因此,在這方面,`PREPARE TRANSACTION` 表現得更像`COMMIT`而不是`ROLLBACK`。 所有目前可用的預備事務都在系統視圖[`pg_prepared_xacts`](#calibre_link-902) 里面列出。 | **Caution** | |:--- | | 把一個事務長時間停在預備狀態是不明智的:它會影響`VACUUM`回收存儲的能力, 并且在極端情況可能導致數據庫關閉以阻止包括事務ID(參閱[Section 23.1.5](#calibre_link-92))。 還要記住,事務會繼續持有它們持有的鎖。 這個特性的用法是預備事務通常會在外部的事務管理器核實了其它數據庫也準備好提交之后,提交或者回滾事務。 如果你還沒有設置一個額外的事務管理器追蹤預備事務和確保他們得到及時關閉, 最好通過設置[max_prepared_transactions](#calibre_link-1380)為0來保持預備事務特征不可用。 這將阻止意外的創建可能被遺忘和最終導致問題的預備事務。 | ## 例子 為當前事務做兩階段提交的準備,使用`foobar`做為事務標識符: ``` PREPARE TRANSACTION 'foobar'; ``` ## 兼容性 `PREPARE TRANSACTION`是一個PostgreSQL擴展。 該命令設計是給外部事務管理系統使用,SQL標準只涉及部分功能(如X/Open XA),但這些功能目前沒有標準化。 ## 又見 [COMMIT PREPARED](#calibre_link-901), [ROLLBACK PREPARED](#calibre_link-904)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看