【PostgreSQL】データベースのtemplate1、template0とはを調べてみた

2021年8月8日PostgreSQLその他

データベース「template1」とは

データベースのtemplate1とはその名の通り、データベースのテンプレートのことです。

 

テンプレートということもあって、データベースを新しく作る時(CREATE DATABASE)する時には、

このtemplate1をコピーして新しいデータベースを作っています

 

つまり新しいデータベースに常に入れておきたい共通関数などをここに作っておけば、

CREATE後に改めて作らなくてもよいということになり、ここは便利なところです。

 

データベースの文字コードもtemplate1から引き継がれるので、

(あるか不明ですが)度々変更しているケースがあればここを変えてしまうのも手でしょうか。

 

 

データベース「template0」とは

データベースのtemplate1の他にtemplate0も存在しています。

 

上で記述しているようにtemplate1は適宜変更を加えることを想定していますが、

template0は、システム標準のオブジェクトのみが含まれるため更新や削除はできません。

 

template0からデータベースを作成するには次のSQLを使用します。

※ 指定をしない場合は、template1から作成される

--templete0からデータベース作成する構文
CREATE DATABASE 作成するデータベース名 TEMPLATE template0;

--例:template0からデータベース名「testdb」を作成する
CREATE DATABASE testdb TEMPLATE template0;