• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

postgresql创建分区

mysql 搞代码 4年前 (2022-01-09) 26次浏览 已收录 0个评论

postgresql创建分区 1.创建主表 create table measurement( city_id int not NULL, logdate date not NULL, peaktemp int, unitsales int ); 2创建分区表 create table measurement_201303( CHECK(logdate=DATE2013-03-01 and logdate DATE2013-04-01) ) INH

postgresql创建分区

1.创建主表

create table measurement(

city_id int not NULL,

logdate date not NULL,

peaktemp int,

unitsales int

);

2创建分区表

create table measurement_201303(

CHECK(logdate>=DATE'2013-03-01' and logdate< DATE'2013-04-01')

) INHERITS(measurement);

create table measurement_201304(

CHECK(logdate>=DATE'2013-04-01' and logdate< DATE'2013-05-01')

) INHERITS(measurement);

create table measurement_201305(

CHECK(logdate>=DATE'2013-05-01' and logdate< DATE'2013-06-01')

) INHERITS(measurement);

3,可以在相应的分区表上建立索引

create index measurement_201303_logdate on measurement_201303(logdate);

create index measurement_201304_logdate on measurement_201304(logdate);

create index measurement_201305_logdate on measurement_201305(logdate);

4.创建触发的存储过程

create or REPLACE FUNCTION measurement_insert_trigger()

returns trigger as $$

begin

if(NEW.logdate >=date'2013-03-01' and NEW.logdate <DATE'2013-04-01') THEN

insert into measurement_201303 VALUES(NEW.*);

ELSEIF(NEW.logdate >=date'2013-04-01' and NEW.logdate <DATE'2013-05-01') THEN

insert into measurement_201304 VALUES(NEW.*);

ELSEIF(NEW.logdate >=date'2013-05-01' and NEW.logdate <DATE'2013-06-01') THEN

insert into measurement_201305 VALUES(NEW.*);

ELSE本文来源[email protected]搞@^&代*@码网(

raise EXCEPTION 'Date out of range.Fix the measurment_insert_trigger() function!';

end if;

RETURN null;

end;

$$

LANGUAGE plpgsql;

5.创建触发器

CREATE TRIGGER insert_measurement_trigger

BEFORE INSERT ON measurement

FOR EACH ROW EXECUTE PROCEDURE measurement_insert_trigger();

6.插入数据

insert into measurement(city_id,logdate,peaktemp,unitsales) VALUES (1,'2013-03-02',1,1);

insert into measurement(city_id,logdate,peaktemp,unitsales) VALUES (2,'2013-04-02',2,2);

insert into measurement(city_id,logdate,peaktemp,unitsales) VALUES (3,'2013-05-02',3,3);

7.查询数据.

select *from measurement

select *from measurement_201303;

select *from measurement_201304;

select *from measurement_201305;


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:postgresql创建分区

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址