分区表

分区表


create table maintb(id int,name char(10));


 create table childtb_1 (CHECK ( id BETWEEN 1 AND 200)) inherits(maintb);
 create table childtb_2 (CHECK ( id BETWEEN 201 AND 400)) inherits(maintb);
 create table childtb_3 (CHECK ( id BETWEEN 401 AND 600)) inherits(maintb);
 create table childtb_4 (CHECK ( id BETWEEN 601 AND 800)) inherits(maintb);
 create table childtb_5 (CHECK ( id BETWEEN 801 AND 1000)) inherits(maintb);


 CREATE INDEX childtb_idx_1 ON childtb_1 (id);
 CREATE INDEX childtb_idx_2 ON childtb_2 (id);
 CREATE INDEX childtb_idx_3 ON childtb_3 (id);
 CREATE INDEX childtb_idx_4 ON childtb_4 (id);
 CREATE INDEX childtb_idx_5 ON childtb_5 (id);


 CREATE OR REPLACE FUNCTION maintb_insert_trigger() 
 RETURNS TRIGGER AS $$ 
 BEGIN
     IF( NEW.id BETWEEN 1 AND 200 ) THEN 
         INSERT INTO childtb_1 VALUES (NEW.*); 
     ELSIF( NEW.id BETWEEN 201 AND 400 ) THEN 
         INSERT INTO childtb_2 VALUES (NEW.*); 
     ELSIF( NEW.id BETWEEN 401 AND 600 ) THEN 
         INSERT INTO childtb_3 VALUES (NEW.*); 
     ELSIF( NEW.id BETWEEN 601 AND 800 ) THEN 
         INSERT INTO childtb_4 VALUES (NEW.*); 
     ELSIF( NEW.id BETWEEN 801 AND 1000 ) THEN 
         INSERT INTO childtb_5 VALUES (NEW.*); 
     ELSE 
         RAISE EXCEPTION 'id out of range!'; 
     END IF; 
     RETURN NULL; 
 END; 
 $$ 
 LANGUAGE plpgsql;


 CREATE TRIGGER insert_maintb_trigger 
     BEFORE INSERT ON maintb 
     FOR EACH ROW EXECUTE PROCEDURE maintb_insert_trigger();




insert into maintb values(1,'abcde12345');
insert into maintb values(300,'abcde300');
explain select * from maintb where id=2;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/91975/viewspace-1784191/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/91975/viewspace-1784191/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值