=DATE'2012-11-01'andjoin_date

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

postgresql 分區(qū)表

系統(tǒng) 3443 0

?

1.普通方式建立主表

      
        create
      
      
        table
      
      
         tbl_partition(

    id 
      
      
        integer
      
      
        ,

    name 
      
      
        varchar
      
      (
      
        20
      
      
        ),

    gender boolean,

    join_date date,

    dept 
      
      
        char
      
      (
      
        4
      
      
        )

)
      
    

2.創(chuàng)建分區(qū)表.(注意加上約束和繼承)

      
        create
      
      
        table
      
      
         tbl_partition_201211(

    
      
      
        check
      
      ( join_date
      
        >=
      
      DATE 
      
        '
      
      
        2012-11-01
      
      
        '
      
      
        and
      
       join_date
      
        <
      
       DATE 
      
        '
      
      
        2012-12-01
      
      
        '
      
      
         )

)inherits(tbl_partition);




      
      
        create
      
      
        table
      
      
         tbl_partition_201212 (


      
      
        check
      
       ( join_date 
      
        >=
      
       DATE 
      
        '
      
      
        2012-12-01
      
      
        '
      
      
        AND
      
       join_date 
      
        <
      
       DATE 
      
        '
      
      
        2013-01-01
      
      
        '
      
      
         )      

) INHERITS (tbl_partition);




      
      
        create
      
      
        table
      
      
         tbl_partition_201301 (


      
      
        check
      
       ( join_date 
      
        >=
      
       DATE 
      
        '
      
      
        2013-01-01
      
      
        '
      
      
        AND
      
       join_date 
      
        <
      
       DATE 
      
        '
      
      
        2013-02-01
      
      
        '
      
      
         )      

) INHERITS (tbl_partition);




      
      
        create
      
      
        table
      
      
         tbl_partition_201302 (


      
      
        check
      
       ( join_date 
      
        >=
      
       DATE 
      
        '
      
      
        2013-02-01
      
      
        '
      
      
        AND
      
       join_date 
      
        <
      
       DATE 
      
        '
      
      
        2013-03-01
      
      
        '
      
      
         )  

) INHERITS (tbl_partition);




      
      
        create
      
      
        table
      
      
         tbl_partition_201303 (


      
      
        check
      
       ( join_date 
      
        >=
      
       DATE 
      
        '
      
      
        2013-03-01
      
      
        '
      
      
        AND
      
       join_date 
      
        <
      
       DATE 
      
        '
      
      
        2013-04-01
      
      
        '
      
      
         ) 

) INHERITS (tbl_partition);




      
      
        create
      
      
        table
      
      
         tbl_partition_201304 (


      
      
        check
      
       ( join_date 
      
        >=
      
       DATE 
      
        '
      
      
        2013-04-01
      
      
        '
      
      
        AND
      
       join_date 
      
        <
      
       DATE 
      
        '
      
      
        2013-05-01
      
      
        '
      
      
         )  

) INHERITS (tbl_partition);




      
      
        create
      
      
        table
      
      
         tbl_partition_201305 (


      
      
        check
      
       ( join_date 
      
        >=
      
       DATE 
      
        '
      
      
        2013-05-01
      
      
        '
      
      
        AND
      
       join_date 
      
        <
      
       DATE 
      
        '
      
      
        2013-06-01
      
      
        '
      
      
         )  

) INHERITS (tbl_partition);
      
    

?

3.分區(qū)表上建立索引.

      
        create
      
      
        index
      
       tbl_partition_201211_joindate 
      
        on
      
      
         tbl_partition_201211 (join_date);




      
      
        create
      
      
        index
      
       tbl_partition_201212_joindate 
      
        on
      
      
         tbl_partition_201212 (join_date); 




      
      
        create
      
      
        index
      
       tbl_partition_201301_joindate 
      
        on
      
      
         tbl_partition_201301 (join_date);    




      
      
        create
      
      
        index
      
       tbl_partition_201302_joindate 
      
        on
      
      
         tbl_partition_201302 (join_date); 




      
      
        create
      
      
        index
      
       tbl_partition_201303_joindate 
      
        on
      
      
         tbl_partition_201303 (join_date); 




      
      
        create
      
      
        index
      
       tbl_partition_201304_joindate 
      
        on
      
      
         tbl_partition_201304 (join_date); 




      
      
        create
      
      
        index
      
       tbl_partition_201305_joindate 
      
        on
      
       tbl_partition_201305 (join_date); 
    

?

4.postgresql不能自動(dòng)插入到字表.所以

要?jiǎng)?chuàng)建觸發(fā)器 函數(shù) 和創(chuàng)建觸發(fā)器.這樣對(duì)外插入就不會(huì)有字表的感覺(jué).

觸發(fā)器函數(shù):

      
        CREATE
      
      
        OR
      
      
        REPLACE
      
      
        FUNCTION
      
      
         tbl_partition_insert_trigger()                      


      
      
        RETURNS
      
      
        TRIGGER
      
      
        AS
      
      
         $$  


      
      
        BEGIN
      
      
        IF
      
       ( NEW.join_date 
      
        >=
      
       DATE 
      
        '
      
      
        2012-11-01
      
      
        '
      
      
        AND
      
      
            

         NEW.join_date 
      
      
        <
      
       DATE 
      
        '
      
      
        2012-12-01
      
      
        '
      
       ) 
      
        THEN
      
      
        INSERT
      
      
        INTO
      
       tbl_partition_201211 
      
        VALUES
      
       (NEW.
      
        *
      
      
        );  

    ELSIF ( NEW.join_date 
      
      
        >=
      
       DATE 
      
        '
      
      
        2012-12-01
      
      
        '
      
      
        AND
      
      
          

            NEW.join_date 
      
      
        <
      
       DATE 
      
        '
      
      
        2013-01-01
      
      
        '
      
       ) 
      
        THEN
      
      
        INSERT
      
      
        INTO
      
       tbl_partition_201212 
      
        VALUES
      
       (NEW.
      
        *
      
      
        );  

    ELSIF ( NEW.join_date 
      
      
        >=
      
       DATE 
      
        '
      
      
        2013-01-01
      
      
        '
      
      
        AND
      
      
          

            NEW.join_date 
      
      
        <
      
       DATE 
      
        '
      
      
        2013-02-01
      
      
        '
      
       ) 
      
        THEN
      
      
        INSERT
      
      
        INTO
      
       tbl_partition_201301 
      
        VALUES
      
       (NEW.
      
        *
      
      
        );  

    ELSIF ( NEW.join_date 
      
      
        >=
      
       DATE 
      
        '
      
      
        2013-02-01
      
      
        '
      
      
        AND
      
      
          

            NEW.join_date 
      
      
        <
      
       DATE 
      
        '
      
      
        2013-03-01
      
      
        '
      
       ) 
      
        THEN
      
      
        INSERT
      
      
        INTO
      
       tbl_partition_201302 
      
        VALUES
      
       (NEW.
      
        *
      
      
        );  

    ELSIF ( NEW.join_date 
      
      
        >=
      
       DATE 
      
        '
      
      
        2013-03-01
      
      
        '
      
      
        AND
      
      
          

            NEW.join_date 
      
      
        <
      
       DATE 
      
        '
      
      
        2013-04-01
      
      
        '
      
       ) 
      
        THEN
      
      
        INSERT
      
      
        INTO
      
       tbl_partition_201303 
      
        VALUES
      
       (NEW.
      
        *
      
      
        );  

    ELSIF ( NEW.join_date 
      
      
        >=
      
       DATE 
      
        '
      
      
        2013-04-01
      
      
        '
      
      
        AND
      
      
          

            NEW.join_date 
      
      
        <
      
       DATE 
      
        '
      
      
        2013-05-01
      
      
        '
      
       ) 
      
        THEN
      
      
        INSERT
      
      
        INTO
      
       tbl_partition_201304 
      
        VALUES
      
       (NEW.
      
        *
      
      
        );

    ELSIF ( NEW.join_date 
      
      
        >=
      
       DATE 
      
        '
      
      
        2013-05-01
      
      
        '
      
      
        AND
      
      
        

            NEW.join_date 
      
      
        <
      
       DATE 
      
        '
      
      
        2013-06-01
      
      
        '
      
       ) 
      
        THEN
      
      
        INSERT
      
      
        INTO
      
       tbl_partition_201305 
      
        VALUES
      
       (NEW.
      
        *
      
      
        ); 

    
      
      
        ELSE
      
      
          

        RAISE EXCEPTION 
      
      
        '
      
      
        Date out of range. Fix the tbl_partition_insert_trigger() function!
      
      
        '
      
      
        ;  

    
      
      
        END
      
      
        IF
      
      
        ;  

    
      
      
        RETURN
      
      
        NULL
      
      
        ;  


      
      
        END
      
      
        ;  

$$  

LANGUAGE plpgsql;
      
    

觸發(fā)器:

      
        CREATE
      
      
        TRIGGER
      
      
         insert_tbl_partition_traigger

    BEFORE 
      
      
        INSERT
      
      
        ON
      
      
         tbl_partition

    
      
      
        For
      
      
         EACH ROW 

    
      
      
        EXECUTE
      
      
        PROCEDURE
      
       tbl_partition_insert_trigger();
    

?

?

?

5.插入數(shù)據(jù)進(jìn)行測(cè)試.

?

      
        insert
      
      
        into
      
       tbl_partition 
      
        values
      
       (
      
        1
      
      , 
      
        '
      
      
        David
      
      
        '
      
      , 
      
        '
      
      
        1
      
      
        '
      
      , 
      
        '
      
      
        2013-01-10
      
      
        '
      
      , 
      
        '
      
      
        TS
      
      
        '
      
      
        );




      
      
        insert
      
      
        into
      
       tbl_partition 
      
        values
      
       (
      
        2
      
      , 
      
        '
      
      
        Sandy
      
      
        '
      
      , 
      
        '
      
      
        0
      
      
        '
      
      , 
      
        '
      
      
        2013-02-10
      
      
        '
      
      , 
      
        '
      
      
        TS
      
      
        '
      
      
        );




      
      
        insert
      
      
        into
      
       tbl_partition 
      
        values
      
       (
      
        3
      
      , 
      
        '
      
      
        Eagle
      
      
        '
      
      , 
      
        '
      
      
        1
      
      
        '
      
      , 
      
        '
      
      
        2012-11-01
      
      
        '
      
      , 
      
        '
      
      
        TS
      
      
        '
      
      
        );




      
      
        insert
      
      
        into
      
       tbl_partition 
      
        values
      
       (
      
        4
      
      , 
      
        '
      
      
        Miles
      
      
        '
      
      , 
      
        '
      
      
        1
      
      
        '
      
      , 
      
        '
      
      
        2012-12-15
      
      
        '
      
      , 
      
        '
      
      
        SD
      
      
        '
      
      
        );




      
      
        insert
      
      
        into
      
       tbl_partition 
      
        values
      
       (
      
        5
      
      , 
      
        '
      
      
        Simon
      
      
        '
      
      , 
      
        '
      
      
        1
      
      
        '
      
      , 
      
        '
      
      
        2012-12-10
      
      
        '
      
      , 
      
        '
      
      
        SD
      
      
        '
      
      
        );




      
      
        insert
      
      
        into
      
       tbl_partition 
      
        values
      
       (
      
        6
      
      , 
      
        '
      
      
        Rock
      
      
        '
      
      , 
      
        '
      
      
        1
      
      
        '
      
      , 
      
        '
      
      
        2012-11-10
      
      
        '
      
      , 
      
        '
      
      
        SD
      
      
        '
      
      
        );




      
      
        insert
      
      
        into
      
       tbl_partition 
      
        values
      
       (
      
        7
      
      , 
      
        '
      
      
        Peter
      
      
        '
      
      , 
      
        '
      
      
        1
      
      
        '
      
      , 
      
        '
      
      
        2013-01-11
      
      
        '
      
      , 
      
        '
      
      
        SD
      
      
        '
      
      
        );




      
      
        insert
      
      
        into
      
       tbl_partition 
      
        values
      
       (
      
        8
      
      , 
      
        '
      
      
        Sally
      
      
        '
      
      , 
      
        '
      
      
        0
      
      
        '
      
      , 
      
        '
      
      
        2013-03-10
      
      
        '
      
      , 
      
        '
      
      
        BCSC
      
      
        '
      
      
        );




      
      
        insert
      
      
        into
      
       tbl_partition 
      
        values
      
       (
      
        9
      
      , 
      
        '
      
      
        Carrie
      
      
        '
      
      , 
      
        '
      
      
        0
      
      
        '
      
      , 
      
        '
      
      
        2013-04-02
      
      
        '
      
      , 
      
        '
      
      
        BCSC
      
      
        '
      
      
        );




      
      
        insert
      
      
        into
      
       tbl_partition 
      
        values
      
       (
      
        10
      
      , 
      
        '
      
      
        Lee
      
      
        '
      
      , 
      
        '
      
      
        1
      
      
        '
      
      , 
      
        '
      
      
        2013-01-05
      
      
        '
      
      , 
      
        '
      
      
        BMC
      
      
        '
      
      
        );




      
      
        insert
      
      
        into
      
       tbl_partition 
      
        values
      
       (
      
        11
      
      , 
      
        '
      
      
        Nicole
      
      
        '
      
      , 
      
        '
      
      
        0
      
      
        '
      
      , 
      
        '
      
      
        2012-11-10
      
      
        '
      
      , 
      
        '
      
      
        PROJ
      
      
        '
      
      
        );




      
      
        insert
      
      
        into
      
       tbl_partition 
      
        values
      
       (
      
        12
      
      , 
      
        '
      
      
        Renee
      
      
        '
      
      , 
      
        '
      
      
        0
      
      
        '
      
      , 
      
        '
      
      
        2013-01-10
      
      
        '
      
      , 
      
        '
      
      
        TS
      
      
        '
      
      );
    

?

?

另: 解除分區(qū)方法:

      
        alter
      
      
        table
      
       tbl_partition_201304 no inherit tbl_partition;
    

  增加分區(qū):

?

?

參考:

PostgreSQL官方說(shuō)明: http://www.postgresql.org/docs/9.2/static/ddl-partitioning.html

ITEYE: http://diegoball.iteye.com/blog/713826

kenyon(君羊): http://my.oschina.net/Kenyon/blog/59455

博客園: http://www.cnblogs.com/mchina/archive/2013/04/09/2973427.html

postgresql 分區(qū)表


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 日本欧美一区二区三区不卡视频 | 久久久精品麻豆 | 精品伊人网 | 免费在线观看一级片 | 影音先锋在线亚洲精品推荐 | 99精品视频在线这里只有 | bbw满足护士 | 六色视频 | 日韩毛片在线免费观看 | 国产精品推荐 | 国产偷国产偷亚洲高清在线 | 真人实干一级毛片aa免费 | 欧美级毛片 | www.夜夜骑.com | 亚洲 欧美 另类 天天更新影院 | 黄色日本视频 | 国产高清国内精品福利99久久 | 欧美大片天天免费看视频 | 五月天激情亚洲婷婷在线 | 九九在线视频 | 一级女性全黄生活片免费看 | 波多野结衣与公中出中文字幕 | 亚洲国产激情 | 久久久久亚洲香蕉网 | 五月天婷五月天综合网在线 | 大学生不戴套毛片视频 | 91在线丨亚洲 | 精品一区二区日本高清 | 亚洲美女视频网 | 女bbbbxxxx毛片视频丶 | 99精品欧美 | 最近中文字幕无吗高清视频 | 快射视频在线观看 | 成人小视频网 | 亚洲一区有码 | www欧美com | 国产探花视频在线观看 | 七次郎在线成人精品 | 日韩激情中文字幕一区二区 | 亚洲综合伊人色一区 | 美日韩黄色片 |