PostgreSQL 9.6分区表使用

1.创建主表

CREATE TABLE public.t_sensor_data (
	id varchar(32) NOT NULL,
	sensor_item_id varchar(32) NOT NULL,
	value numeric(19, 3) NULL,
	record_time timestamp(6) NOT NULL,
);

2.创建分区表

create table "t_sensor_data_202306"(check (record_time  >=  date '2023-06-01' and record_time <  date '2023-07-01') )
        inherits (t_sensor_data);
create table "t_sensor_data_202307"(check (record_time  >=  date '2023-07-01' and record_time <  date '2023-08-01') )
        inherits (t_sensor_data);
create table "t_sensor_data_202308"(check (record_time  >=  date '2023-08-01' and record_time <  date '2023-09-01') )
        inherits (t_sensor_data);

3. 创建触发器函数

create or replace function t_sensor_data_insert_trigger()
returns trigger as $$
begin
    EXECUTE format ('insert into %I values ($1.* )','t_sensor_data_' || to_char(NEW. record_time, 'yyyymm')) USING NEW;
  return null;
end;
$$
language plpgsql

4.创建触发器

create trigger t_sensor_data_detail_trigger
before insert on t_sensor_data
for each row execute procedure t_sensor_data_insert_trigger ()

5.结果

INSERT INTO "t_sensor_data" (id, sensor_item_id, value,record_time)
VALUES (6, 12, 3,'2023-07-13 13:26:35.729');   
select * from t_sensor_data_202306 tsd 

在这里插入图片描述
结果:
结果图片在这里插入图片描述

文章参考:https://blog.csdn.net/yztezhl/article/details/123522707

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值