DATABASEの動作は、既存のデータベースをコピーすることです。デフォルトでは、template1という名前の標準のシステムデータベースをコピーします。したがって、このデータベースは新しく作成するデータベースの元になる「テンプレート」となります。template1にオブジェクトを追加した場合、追加したオブジェクトはその後に作成されるユーザデータベースにコピーされます。この振舞いによって、データベース標準オブジェクト群にサイト独自の変更を行うことができます。PL/Perl手続き言語をtemplate1にインストールした場合、データベースを作成する時に追加作業を行うことなく、自動的にこの言語をユーザデータベースで使用することができます。template0という名前の二次的な標準システムデータベースがあります。このデータベースにはtemplate1の初期内容と同じデータが含まれています。使用しているバージョンのPostgreSQLで定義済みの標準オブジェクトのみから構成されています。template0をデータベースクラスタを初期化した後に変更してはいけません。DATABASEをtemplate1ではなくtemplate0をコピーするように実行することで、template1に追加されたサイト独自のものを含まない、「汚れがない」ユーザデータベースを作成することができます。これは特に、pg_dumpダンプからリストアする時に便利です。このダンプスクリプトは、後でtemplate1に追加される可能性のあるオブジェクトと衝突しないように、ダンプしたデータベースの内容を正しく再作成するために、汚れのないデータベースにリストアされなければなりません。template1の代わりにtemplate0をコピーするその他の一般的な理由は、template0をコピーするときに新規の符号化方式とロケールを設定できることです。template1のコピーはそれが行ったと同一の設定を使用しなければなりません。これはtemplate0が理解しない符号化方式特有の、またはロケール特有のデータを含んでいる可能性があることに依ります。dbnameをシェルから実行します。テンプレートデータベースを作成することができます。DATABASEのテンプレートとして名前を指定することで、クラスタ内の任意のデータベースをコピーすることができます。DATABASE」能力を意図したものではないことは理解しておいてください。コピー操作の間、他のセッションから元のデータベースに接続することができないという点が大きな制限です。DATABASEは、その起動時に他の接続が存在する場合失敗します。コピー操作中は元のデータベースへの新しい接続を許しません。datistemplate列とdatallowconn列という、データベースそれぞれに有用なフラグがpg_databaseに存在します。DATABASEのテンプレートとして使用されることを目的としているものであることを意味するために設定することができます。このフラグが設定された場合、CREATEDB権限を持つすべてのユーザはそのデータベースを複製することができます。設定されていない場合は、スーパーユーザとそのデータベース所有者のみがそれを複製することができます。datallowconnが偽の場合、そのデータベースへの新規接続はできません(しかし、このフラグを偽にするだけでは既存のセッションは閉ざされません)。falseとされています。trueとされていなければなりません。DATABASEのデフォルトのソースデータベースの名前であること以上の特別な地位はありません。template1を削除し、template0から再作成しても何も問題ありません。この操作は、不注意にごみをtemplate1に追加してしまった場合にお勧めします。falseとしなければなりません。)データベースクラスタが初期化される時、postgresデータベースも作成されます。このデータベースは、ユーザとアプリケーションのデフォルトの接続先を意図したものです。これはtemplate1の単純なコピーで、必要に応じて削除したり再作成したりすることができます。