新建PostgreSQL数据库自动生成表,求类似SQL Server model库的相关信息
PostgreSQL中对应SQL Server model数据库的模板库
嘿,刚好对这块熟,来给你捋清楚PostgreSQL里的对应方案~
PostgreSQL里承担和SQL Server model数据库相同职责的是模板数据库,主要有两个:template1和template0,核心逻辑都是作为新数据库的创建基准——每次你执行CREATE DATABASE命令时,默认都会复制template1的所有内容(包括表、函数、扩展、配置参数等)来生成新库,完全符合你说的「创建新库时自动包含指定表」的需求。
两个模板库的区别
- template1:这是默认的可修改模板库,你可以自由在里面添加表、安装扩展、调整配置,之后所有新创建的数据库都会继承这些改动。比如你需要所有新库都自带一张基础表,直接在
template1里创建就行。 - template0:这是系统保留的「干净模板」,它是创建
template1的原始基准,不会被日常改动影响。如果template1被改乱了,你可以用template0来重建它;或者你需要创建一个完全干净的新库(不继承template1的自定义内容),可以指定模板为template0:CREATE DATABASE clean_new_db TEMPLATE template0;
实操示例
比如要让所有新库自动包含一张名为system_metadata的表,步骤如下:
- 切换到
template1数据库:\c template1 - 创建目标表:
CREATE TABLE system_metadata ( id SERIAL PRIMARY KEY, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, db_name VARCHAR(100) NOT NULL ); - 之后创建新库:
CREATE DATABASE my_new_project; - 切换到新库查看,你会发现
system_metadata表已经自动存在了~
小提示
和SQL Server的model不同的是,PostgreSQL是直接在文件系统层面复制模板库的数据文件,所以模板库的改动会被完整复刻到新库中,包括已经插入的数据(如果有的话),这点需要注意哦。
内容的提问来源于stack exchange,提问作者ckthe1
相关产品推荐
相关产品推荐

