当前位置: 首页 > news >正文

【赵渝强老师】PostgreSQL的模板数据库

在这里插入图片描述

在PostgreSQL中,创建数据库时实际上通过拷贝一个已有数据库进行工作的。在默认情况下,将拷贝名为template1的标准系统数据库。所以该数据库是创建新数据库的“模板”。如果为template1数据库增加对象,这些对象将被拷贝到后续创建的用户数据库中。这种行为允许对数据库中标准对象集合的进行修改。例如,如果把过程语言PL/Perl安装到template1中,那么在创建用户数据库后不需要额外的操作就可以使用该语言。

视频讲解如下

【赵渝强老师】PostgreSQL的模板数据库

系统里还有名为template0的第二个标准系统数据库。这个数据库包含和template1初始内容一样的数据,但只包含PostgreSQL版本预定义的标准对象。在数据库集群被初始化之后,不应该对template0做任何修改。在创建数据库时通过指示使用template0取代template1进行拷贝,可以创建一个“纯净的”用户数据库,它不会包含任何template1中的站点本地附加物。

执行下面的语句可以查看当前已存在的数据库信息。

postgres=# select oid,datname,datistemplate,datallowconn
              from pg_database;
# 输出的信息如下:
  oid  |  datname  | datistemplate | datallowconn 
-------+-----------+---------------+--------------
 13580 | postgres  | f             | t
     1 | template1 | t             | t
 13579 | template0 | t             | f
(4 rows)

其中有两个有用的标识:

  • datistemplate可以被设置来指示该数据库是不是要作为创建数据库的模板。如果设置了这个标志,那么该数据库可以被任何有createdb权限的用户克隆;如果没有被设置,那么只有超级用户和该数据库的拥有者可以克隆它。

  • 如果datallowconn为false,那么将不允许与该数据库建立任何新的连接。但已有的会话不会因为把该标志设置为false而被中止。

template0通常被标记为datallowconn = false来阻止对它的修改。template0和template1通常总是被标记为datistemplate = true。

《PostgreSQL数据库实战派》

相关文章:

  • 【C#学习笔记03】进制转换与反码、补码、原码
  • 数字人源头技术saas厂家开发
  • 木马查杀之AST初识篇
  • UE5.5 Niagara发射器更新属性
  • 迅为RK3568开发板篇Openharmony配置HDF控制UART-实操-HDF驱动配置UART-UART应用开发-UART驱动API接口介绍
  • 四层协议攻防手册:从SYN Flood到UDP反射的深度防御
  • 从前端视角理解消息队列:核心问题与实战指南
  • cesium1.126显示等高线
  • 深度学习基础:线性代数本质2——线性组合、张成的空间与基
  • Linux进程管理15 - CFS调度器2 - 数据结构关系
  • CAMEL 学习笔记一
  • 深入解析 RAG:检索增强生成的原理与应用
  • 【NLP 34、实践 ⑧ 基于faq知识库和文本匹配算法进行意图识别】
  • 如何进行项目风险评估
  • 游戏引擎学习第151天
  • 罗德与施瓦茨SMCV100B,不同技术的多种应用矢量信号发生器
  • AI智能眼镜主控芯片:技术演进与产业生态的深度解析
  • ubuntu20不同版本的cudnn切换
  • golang 静态库 Undefined symbol: __mingw_vfprintf
  • C++蓝桥杯基础篇(十一)
  • 首个偏头痛急性治疗药物可缓解前期症状
  • 美国务卿鲁比奥将前往土耳其参加俄乌会谈
  • 中巡组在行动丨①震慑:这些地区有官员落马
  • 西北大学副校长范代娣成陕西首富?系家庭财富,本人已从上市公司退出
  • 金价大跌!足金饰品每克一夜便宜14元,涨势是否已终结?
  • 老人将房产遗赠给外孙,三个女儿却认为遗嘱应无效,法院判了