PostgreSQL 11 新特性解读 : 分区表增加 Default Partition

本文介绍了PostgreSQL 11版本中新增的Default分区功能,用于存储不满足分区定义的数据。通过示例展示了创建、插入、解绑及连接Default分区的过程,以及如何在已有Default分区的情况下添加新分区。
摘要由CSDN通过智能技术生成

PostgreSQL 10 版本当往分区表写入的数据不在分区定义范围内时会报错,无法插入数据,PostgreSQL 11 版本分区表增加了 Default 分区用来存储不满足分区定义范围的数据。

本节以创建范围分区表为例进行测试。

PostgreSQL 10 版本

在PostgreSQL 10 版本进行测试,详见以下。

创建父表

create table tbl_log (
 id serial,
 create_time timestamp(0) without time zone,
 remark char(1)
) PARTITION BY  RANGE(create_time);

创建子表

CREATE TABLE tbl_log_p201801 PARTITION OF tbl_log FOR VALUES FROM ('2018-01-01') TO ('2018-02-01');
CREATE TABLE tbl_log_p201802 PARTITION OF tbl_log FOR VALUES FROM ('2018-02-01') TO ('2018-03-01');

插入测试

PostgreSQL 10 版本插入一条不在分区定义范围的记录,如下

mydb=> INSERT INTO tbl_log(id,create_time,remark) VALUES (3,'2018-03-01','a');
ERROR:  no partition of relation "tbl_log" found for row
DETAIL:  Partition key of the failing row contains (create_time) = (2018-03-01 00:00:00).

插入报错,提示找不到相应分区无法插入数据。

PostgreSQL 11 版本

PostgreSQL 11 版本支持创建 Default 分区,用来存储不满足分区定义的数据,测试如下。

创建父表

create table tbl_log (
 id serial,
 create_time timestamp(0) without time zone,
 remark char(1)
) PARTITION BY  RANGE(create_time);

创建常规分区

CREATE TABLE tbl_log_p201801 PARTITION OF tbl_log FOR VALUES FROM ('2018-01-01') TO ('2018-02-01');
CREATE TABLE tbl_log_p201802 PARTITION OF tbl_log FOR VALUES FROM ('2018-02-01') T
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值