PostgreSQL模板数据库
PostgreSQL有两个模板数据库:template0和template1,template0是不可修改的,而template1是可以修改的。
那模板数据库有什么作用呢?顾名思义,当做模板。
其实我们创建数据库 CREATE DATABASE
其实就是复制template1模板库,命名为新库。
那两个模板库有什么区别呢?
template0模板库
- template0是不可修改的,是PG的最后一道防线!因为(template1模板库)可以改,可以进行定制化;而同时也意味着可能会改错,如果改错了,就创建不了数据库了;所以template0是最后的保险,是不能修改的。
- 使用template0可指定字符集和本地化collate属性。
create database dbname with encoding 'UTF-8' template template0
lc_collate='zh_CN.utf8' lc_ctype='zh_CN.utf8';
template1模板库
- template1是可以修改的,可以定制化一些特定的功能,比如:定制一个dba模式,创建一些运维常用的视图等,这样创建新数据库时,都会自带这个dba模式。
- 使用template1创建数据库时不可指定新的字符集和本地化collate属性,即只能和它的规则保持一致。
create database dbname with template template1;
参考:https://www.postgresql.org/docs/current/manage-ag-templatedbs.html