Heim > Datenbank > MySQL-Tutorial > postgresql创建分区

postgresql创建分区

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-07 14:58:41
Original
1654 Leute haben es durchsucht

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;

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage