> 데이터 베이스 > MySQL 튜토리얼 > postgresql创建分区

postgresql创建分区

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-06-07 14:58:41
원래의
1648명이 탐색했습니다.

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

) INHERITS(measurement);

create table measurement_201304(

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

) INHERITS(measurement);

create table measurement_201305(

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

) 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

            insert into measurement_201303 VALUES(NEW.*);

  ELSEIF(NEW.logdate >=date'2013-04-01' and NEW.logdate

        insert into measurement_201304 VALUES(NEW.*);

    ELSEIF(NEW.logdate >=date'2013-05-01' and NEW.logdate

            insert into measurement_201305 VALUES(NEW.*);

    ELSE

        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;

관련 라벨:
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿