<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 21.3\. 模板數據庫 `CREATE DATABASE`實際上是通過拷貝一個現有的數據庫進行工作的。缺省時, 它拷貝名為`template1`的標準系統數據庫。 所以該數據庫是創建新數據庫的"模板"。如果你給`template1`增加對象, 這些對象將被拷貝到隨后創建的用戶數據庫中。這樣的行為允許節點對數據庫中的標準套件進行修改。 比如,如果你把過程語言PL/Perl安裝到`template1`里, 那么你在創建用戶數據庫的時候它們就會自動可得,而不需要額外的動作。 系統里還有名為`template0`的第二個標準系統數據庫, 這個數據庫包含和`template1`初始時一樣的數據內容,也就是說, 只包含標準的PostgreSQL對象。在數據庫集群初始化之后, 我們不應該對`template0`做任何修改。通過告訴`CREATE DATABASE`使用 `template0`而不是`template1`進行拷貝,你可以創建一個"純凈" 的用戶數據庫,它不會包含任何`template1`里所特有的東西。 這一點在恢復`pg_dump`轉儲的時候是非常方便的: 轉儲腳本應該在一個純凈的數據庫中恢復以確保我們正確創建了被轉儲出的數據庫內容, 而不會隨后和可能已經添加到`template1`中的對象相沖突。 拷貝`template0`而不是`template1`的另一個常見原因是在拷貝 `template0`時,可以指定新的編碼和本地設置,而拷貝`template1` 時必須使用和`template1`相同的設置。這是因為`template1` 可能包含編碼指定或本地指定的數據,而`template0`不這樣。 要通過拷貝`template0`的方法創建一個數據庫,可使用: ``` CREATE DATABASE _dbname_ TEMPLATE template0; ``` 用于 SQL 環境,或: ``` createdb -T template0 _dbname_ ``` 用于 shell 環境。 我們可以創建額外的模板數據庫,而且實際上我們可以在一個集群中通過將 `CREATE DATABASE`的模板聲明為相應的數據庫名拷貝任何數據庫。不過, 我們必需明白,這個功能并非一般性的"`COPY DATABASE`"工具。 實際上,在拷貝操作的過程中,源數據庫必需是空閑狀態(沒有正在處理的數據修改事務)。 如果在`CREATE DATABASE`開始的時候存在其它連接,那么操作將會失敗, 在拷貝期間,到源數據庫的新連接都被阻止。 在`pg_database`里有兩個有用的標志可以用于每個數據庫: `datistemplate`和`datallowconn`字段。`datistemplate` 表示該數據庫是準備用作`CREATE DATABASE`模板的。如果設置了這個標志, 那么該數據庫可以由任何有`CREATEDB`權限的用戶克隆;如果沒有設置, 那么只有超級用戶和該數據庫的所有者可以克隆它。如果`datallowconn`為假, 那么將不允許與該數據庫發生任何新的連接(不過現有的會話不會因為把該標志設置為假而終止)。 `template0`數據庫通常被標記為`datallowconn = false`以避免對它的修改。 `template0`和`template1`都應該總是標記為`datistemplate = true`。 > **Note:** `template1`和`template0`沒有任何特殊的狀態, 除了`template1`是`CREATE DATABASE`的缺省源數據庫名之外。比如, 我們可以刪除`template1`然后從`template0`中創建它而不會有任何不良效果。 如果我們不小心在`template1`里加了一堆垃圾,那么我們就會建議做這樣的操作。 (要刪除`template1`,必須使`pg_database.datistemplate = false`。) > > 在初始化數據庫集群的時候,也會創建`postgres`數據庫。 這個數據庫用于做為用戶和應用連接的缺省數據庫。它只是`template1`的一個簡單拷貝, 需要的時候可以刪除或者重建。
                  <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>

                              哎呀哎呀视频在线观看