当前位置: 首页 > news >正文

杭州商城网站建设百度人工服务热线24小时

杭州商城网站建设,百度人工服务热线24小时,温州网站提升排名,工信部门备案网站参考文档: http://postgres.cn/docs/12/ddl-partitioning.html 创建基于继承的分区表的步骤 1 创建父表 2 创建子表,从父表继承过来 3 创建函数及触发器,使插入的数据根据规则,插入到对应的子表中 -- 创建父表 CREATE TABLE a…

参考文档:
http://postgres.cn/docs/12/ddl-partitioning.html

创建基于继承的分区表的步骤
1 创建父表
2 创建子表,从父表继承过来
3 创建函数及触发器,使插入的数据根据规则,插入到对应的子表中 

-- 创建父表

CREATE TABLE apps.measurement (city_id         int not null,logdate         date not null,peaktemp        int,unitsales       int
);test=# CREATE TABLE apps.measurement (
test(#     city_id         int not null,
test(#     logdate         date not null,
test(#     peaktemp        int,
test(#     unitsales       int
test(# );
CREATE TABLE
test=# 

-- 创建分区表,5个分区 

CREATE TABLE apps.measurement_y2023m01 (CHECK ( logdate >= DATE '2023-01-01' AND logdate < DATE '2023-02-01' )) INHERITS (measurement);
CREATE TABLE apps.measurement_y2023m02 (CHECK ( logdate >= DATE '2023-02-01' AND logdate < DATE '2023-03-01' )) INHERITS (measurement);
CREATE TABLE apps.measurement_y2023m03 (CHECK ( logdate >= DATE '2023-03-01' AND logdate < DATE '2023-04-01' )) INHERITS (measurement);
CREATE TABLE apps.measurement_y2023m04 (CHECK ( logdate >= DATE '2023-04-01' AND logdate < DATE '2023-05-01' )) INHERITS (measurement);
CREATE TABLE apps.measurement_y2023m05 (CHECK ( logdate >= DATE '2023-05-01' AND logdate < DATE '2023-06-01' )) INHERITS (measurement);test=# CREATE TABLE apps.measurement_y2023m01 (CHECK ( logdate >= DATE '2023-01-01' AND logdate < DATE '2023-02-01' )) INHERITS (measurement);
CREATE TABLE
test=# CREATE TABLE apps.measurement_y2023m02 (CHECK ( logdate >= DATE '2023-02-01' AND logdate < DATE '2023-03-01' )) INHERITS (measurement);
CREATE TABLE
test=# CREATE TABLE apps.measurement_y2023m03 (CHECK ( logdate >= DATE '2023-03-01' AND logdate < DATE '2023-04-01' )) INHERITS (measurement);
CREATE TABLE
test=# CREATE TABLE apps.measurement_y2023m04 (CHECK ( logdate >= DATE '2023-04-01' AND logdate < DATE '2023-05-01' )) INHERITS (measurement);
CREATE TABLE
test=# CREATE TABLE apps.measurement_y2023m05 (CHECK ( logdate >= DATE '2023-05-01' AND logdate < DATE '2023-06-01' )) INHERITS (measurement);
CREATE TABLE
test=# 

-- 创建触发器函数,针对不同月份的数据,落入不同的子表,从而达到数据分区的效果

CREATE OR REPLACE FUNCTION apps.measurement_insert_trigger()
RETURNS TRIGGER AS $$
BEGINIF (NEW.logdate >= DATE '2023-01-01' AND  NEW.logdate < DATE '2023-02-01') THEN INSERT INTO apps.measurement_y2023m01 values (NEW.*);ELSIF (NEW.logdate >= DATE '2023-02-01' AND  NEW.logdate < DATE '2023-03-01') THEN INSERT INTO apps.measurement_y2023m02 values (NEW.*);ELSIF (NEW.logdate >= DATE '2023-03-01' AND  NEW.logdate < DATE '2023-04-01') THEN INSERT INTO apps.measurement_y2023m03 values (NEW.*);ELSIF (NEW.logdate >= DATE '2023-04-01' AND  NEW.logdate < DATE '2023-05-01') THEN INSERT INTO apps.measurement_y2023m04 values (NEW.*);ELSIF (NEW.logdate >= DATE '2023-05-01' AND  NEW.logdate < DATE '2023-06-01') THEN INSERT INTO apps.measurement_y2023m05 values (NEW.*);	  ELSE RAISE EXCEPTION 'Date out of range .Fix the apps.measurement_insert_trigger() function!';END IF;RETURN NULL;
END;
$$
LANGUAGE plpgsql;test=# CREATE OR REPLACE FUNCTION apps.measurement_insert_trigger()
test-# RETURNS TRIGGER AS $$
test$# BEGIN
test$#       IF (NEW.logdate >= DATE '2023-01-01' AND  NEW.logdate < DATE '2023-02-01') THEN 
test$#   INSERT INTO apps.measurement_y2023m01 values (NEW.*);
test$#   
test$#   ELSE IF (NEW.logdate >= DATE '2023-02-01' AND  NEW.logdate < DATE '2023-03-01') THEN 
test$#   INSERT INTO apps.measurement_y2023m02 values (NEW.*);
test$#   
test$#   ELSE IF (NEW.logdate >= DATE '2023-03-01' AND  NEW.logdate < DATE '2023-04-01') THEN 
test$#   INSERT INTO apps.measurement_y2023m03 values (NEW.*);
test$#   
test$#   ELSE IF (NEW.logdate >= DATE '2023-04-01' AND  NEW.logdate < DATE '2023-05-01') THEN 
test$#   INSERT INTO apps.measurement_y2023m04 values (NEW.*);
test$#   
test$#   ELSE IF (NEW.logdate >= DATE '2023-05-01' AND  NEW.logdate < DATE '2023-06-01') THEN 
test$#   INSERT INTO apps.measurement_y2023m05 values (NEW.*);
test$#   
test$#   ELSE 
test$#       RAISE EXCEPTION 'Date out of range .Fix the apps.measurement_insert_trigger() function! ';
test$#   END IF;
test$#   RETURN NULL;
test$# END;
test$# $$
test-# LANGUAGE plpgsql;
CREATE FUNCTION
test=# 

-- 创建触发器  ,不带schema,创建的触发器,默认就在apps的schema中

CREATE TRIGGER APPS.INSERT_MEASUREMENT_TRIGGER       <<<<<< 奇怪,触发器带schema,创建的时候报错 ,BEFORE INSERT ON APPS.MEASUREMENTFOR EACH ROW EXECUTE FUNCTION APPS.MEASUREMENT_INSERT_TRIGGER();CREATE or replace  TRIGGER INSERT_MEASUREMENT_TRIGGERBEFORE INSERT ON APPS.MEASUREMENTFOR EACH ROW EXECUTE FUNCTION APPS.MEASUREMENT_INSERT_TRIGGER();	test=# CREATE TRIGGER APPS.INSERT_MEASUREMENT_TRIGGER
test-#     BEFORE INSERT ON APPS.MEASUREMENT
test-#     FOR EACH ROW EXECUTE FUNCTION APPS.MEASUREMENT_INSERT_TRIGGER();
ERROR:  syntax error at or near "."
LINE 1: CREATE TRIGGER APPS.INSERT_MEASUREMENT_TRIGGER^
test=# CREATE or replace  TRIGGER INSERT_MEASUREMENT_TRIGGER
test-#     BEFORE INSERT ON APPS.MEASUREMENT
test-#     FOR EACH ROW EXECUTE FUNCTION APPS.MEASUREMENT_INSERT_TRIGGER();
CREATE TRIGGER
test=# 

-- 插入数据

CREATE TABLE apps.measurement (city_id         int not null,logdate         date not null,peaktemp        int,unitsales       int
);insert into apps.measurement values (1,date '2023-01-02',2,2);
insert into apps.measurement values (2,date '2023-02-02',2,2);	
insert into apps.measurement values (3,date '2023-03-02',2,2);	
insert into apps.measurement values (4,date '2023-04-02',2,2);	
insert into apps.measurement values (5,date '2023-05-02',2,2);	test=# insert into apps.measurement values (1,date '2023-01-02',2,2);
INSERT 0 0
test=# insert into apps.measurement values (2,date '2023-02-02',2,2);
INSERT 0 0
test=# insert into apps.measurement values (3,date '2023-03-02',2,2);
INSERT 0 0
test=# insert into apps.measurement values (4,date '2023-04-02',2,2);
INSERT 0 0
test=# insert into apps.measurement values (5,date '2023-05-02',2,2);
INSERT 0 0
test=# 

-- 查看父表和各个分区表的数据 ,可以看到1个父表,5个分区表

test=# \dList of relationsSchema |         Name         | Type  |  Owner   
--------+----------------------+-------+----------apps   | measurement          | table | postgresapps   | measurement_y2023m01 | table | postgresapps   | measurement_y2023m02 | table | postgresapps   | measurement_y2023m03 | table | postgresapps   | measurement_y2023m04 | table | postgresapps   | measurement_y2023m05 | table | postgresapps   | persons              | table | postgresapps   | students             | table | postgresapps   | t1                   | table | postgres
(9 rows)test=# test=# select * from measurement;city_id |  logdate   | peaktemp | unitsales 
---------+------------+----------+-----------1 | 2023-01-02 |        2 |         22 | 2023-02-02 |        2 |         23 | 2023-03-02 |        2 |         24 | 2023-04-02 |        2 |         25 | 2023-05-02 |        2 |         2
(5 rows)test=# test=# select * from measurement_y2023m01;city_id |  logdate   | peaktemp | unitsales 
---------+------------+----------+-----------1 | 2023-01-02 |        2 |         2
(1 row)test=# select * from measurement_y2023m02;city_id |  logdate   | peaktemp | unitsales 
---------+------------+----------+-----------2 | 2023-02-02 |        2 |         2
(1 row)test=# select * from measurement_y2023m03;city_id |  logdate   | peaktemp | unitsales 
---------+------------+----------+-----------3 | 2023-03-02 |        2 |         2
(1 row)test=# select * from measurement_y2023m04;city_id |  logdate   | peaktemp | unitsales 
---------+------------+----------+-----------4 | 2023-04-02 |        2 |         2
(1 row)test=# select * from measurement_y2023m05;city_id |  logdate   | peaktemp | unitsales 
---------+------------+----------+-----------5 | 2023-05-02 |        2 |         2
(1 row)test=# 

-- 插入2023年6月份的数据 ,直接报错 ,因为此时没有创建6月份的子表,触发器函数中也没有处理6月份数据的规则

insert into apps.measurement values (1,date '2023-06-02',2,2);
test=# insert into apps.measurement values (1,date '2023-06-02',2,2);
ERROR:  Date out of range .Fix the apps.measurement_insert_trigger() function!
CONTEXT:  PL/pgSQL function measurement_insert_trigger() line 23 at RAISE
test=# 

-- 创建6月份分区表,

修改触发器函数。使6月份的数据可以插入进去

CREATE TABLE apps.measurement_y2023m06 (CHECK ( logdate >= DATE '2023-06-01' AND logdate < DATE '2023-07-01' )) INHERITS (measurement);CREATE OR REPLACE FUNCTION apps.measurement_insert_trigger()
RETURNS TRIGGER AS $$
BEGINIF (NEW.logdate >= DATE '2023-01-01' AND  NEW.logdate < DATE '2023-02-01') THEN INSERT INTO apps.measurement_y2023m01 values (NEW.*);ELSIF (NEW.logdate >= DATE '2023-02-01' AND  NEW.logdate < DATE '2023-03-01') THEN INSERT INTO apps.measurement_y2023m02 values (NEW.*);ELSIF (NEW.logdate >= DATE '2023-03-01' AND  NEW.logdate < DATE '2023-04-01') THEN INSERT INTO apps.measurement_y2023m03 values (NEW.*);ELSIF (NEW.logdate >= DATE '2023-04-01' AND  NEW.logdate < DATE '2023-05-01') THEN INSERT INTO apps.measurement_y2023m04 values (NEW.*);ELSIF (NEW.logdate >= DATE '2023-05-01' AND  NEW.logdate < DATE '2023-06-01') THEN INSERT INTO apps.measurement_y2023m05 values (NEW.*);	  ELSIF (NEW.logdate >= DATE '2023-06-01' AND                             <<<<<<<  新加入的规则NEW.logdate < DATE '2023-07-01') THEN INSERT INTO apps.measurement_y2023m06 values (NEW.*);ELSE RAISE EXCEPTION 'Date out of range .Fix the apps.measurement_insert_trigger() function!';END IF;RETURN NULL;
END;
$$
LANGUAGE plpgsql;
test=# insert into apps.measurement values (1,date '2023-06-02',2,2);       <<<<<< 插入6月份数据 
INSERT 0 0
test=# select * from measurement_y2023m06;                                  <<<<<<  查询分区数据 city_id |  logdate   | peaktemp | unitsales 
---------+------------+----------+-----------1 | 2023-06-02 |        2 |         2
(1 row)test=# 

-- 通过视图查看分区表,查询不到基于继承建立的分区表

test=# select * from pg_partitioned_table ;partrelid | partstrat | partnatts | partdefid | partattrs | partclass | partcollation | partexprs 
-----------+-----------+-----------+-----------+-----------+-----------+---------------+-----------
(0 rows)test=# 

--通过dt+ 命令查看建立的父表和子表

test=# \dt+ apps.measurement*List of relationsSchema |         Name         | Type  |  Owner   | Persistence | Access method |    Size    | Description 
--------+----------------------+-------+----------+-------------+---------------+------------+-------------apps   | measurement          | table | postgres | permanent   | heap          | 0 bytes    | apps   | measurement_y2023m01 | table | postgres | permanent   | heap          | 8192 bytes | apps   | measurement_y2023m02 | table | postgres | permanent   | heap          | 8192 bytes | apps   | measurement_y2023m03 | table | postgres | permanent   | heap          | 8192 bytes | apps   | measurement_y2023m04 | table | postgres | permanent   | heap          | 8192 bytes | apps   | measurement_y2023m05 | table | postgres | permanent   | heap          | 8192 bytes | apps   | measurement_y2023m06 | table | postgres | permanent   | heap          | 8192 bytes | 
(7 rows)test=# 

END


文章转载自:
http://absolution.zydr.cn
http://quavering.zydr.cn
http://conglobate.zydr.cn
http://deambulation.zydr.cn
http://among.zydr.cn
http://thorn.zydr.cn
http://comedic.zydr.cn
http://nullipennate.zydr.cn
http://joyrider.zydr.cn
http://administrant.zydr.cn
http://presignify.zydr.cn
http://larchen.zydr.cn
http://piranha.zydr.cn
http://contrition.zydr.cn
http://sandboy.zydr.cn
http://splendor.zydr.cn
http://antechamber.zydr.cn
http://strobila.zydr.cn
http://cyclitol.zydr.cn
http://keratoderma.zydr.cn
http://farraginous.zydr.cn
http://disavowal.zydr.cn
http://concise.zydr.cn
http://agamogenesis.zydr.cn
http://gelding.zydr.cn
http://phrenetic.zydr.cn
http://supportative.zydr.cn
http://somatotopic.zydr.cn
http://ludwig.zydr.cn
http://jumbal.zydr.cn
http://soppy.zydr.cn
http://clad.zydr.cn
http://foray.zydr.cn
http://serpentinous.zydr.cn
http://generotype.zydr.cn
http://poliovirus.zydr.cn
http://lifetime.zydr.cn
http://reprehensibly.zydr.cn
http://portacaval.zydr.cn
http://necessitating.zydr.cn
http://arpnet.zydr.cn
http://pun.zydr.cn
http://psion.zydr.cn
http://donable.zydr.cn
http://hybridisation.zydr.cn
http://appraisal.zydr.cn
http://samurai.zydr.cn
http://minimal.zydr.cn
http://aulic.zydr.cn
http://quadrennium.zydr.cn
http://speedwell.zydr.cn
http://polyposis.zydr.cn
http://recognitory.zydr.cn
http://fullface.zydr.cn
http://strawy.zydr.cn
http://gunmen.zydr.cn
http://gassiness.zydr.cn
http://arpa.zydr.cn
http://incendijel.zydr.cn
http://vallum.zydr.cn
http://licensee.zydr.cn
http://levant.zydr.cn
http://womanish.zydr.cn
http://insensate.zydr.cn
http://audion.zydr.cn
http://hemizygous.zydr.cn
http://reawaken.zydr.cn
http://cusp.zydr.cn
http://intuitionalism.zydr.cn
http://overplow.zydr.cn
http://orthographic.zydr.cn
http://nonuser.zydr.cn
http://headend.zydr.cn
http://travertine.zydr.cn
http://farmerette.zydr.cn
http://ratton.zydr.cn
http://pacesetter.zydr.cn
http://topaz.zydr.cn
http://multocular.zydr.cn
http://forethoughtful.zydr.cn
http://woopie.zydr.cn
http://coeducation.zydr.cn
http://venerer.zydr.cn
http://fulvia.zydr.cn
http://decartelization.zydr.cn
http://deadhead.zydr.cn
http://code.zydr.cn
http://replicase.zydr.cn
http://repentant.zydr.cn
http://contagium.zydr.cn
http://legitimise.zydr.cn
http://snowfall.zydr.cn
http://stubble.zydr.cn
http://irish.zydr.cn
http://elaterite.zydr.cn
http://hah.zydr.cn
http://antiaircraft.zydr.cn
http://emarcid.zydr.cn
http://sublate.zydr.cn
http://booklet.zydr.cn
http://www.dt0577.cn/news/67542.html

相关文章:

  • 网页设计图片跟随鼠标移动北京搜索排名优化
  • hbuider 做网站查询网域名查询
  • 上海 网站建设seo技术交流
  • 电商网站首页怎么制作系统优化的例子
  • 企业品牌推广的核心目的是太原seo推广
  • 进度跟踪网站开发软文写作500字
  • 卖米网站源码房管局备案查询网站
  • 给帅哥做奴视频网站地址中国十大搜索引擎排名
  • 网站编程开发宝鸡seo外包公司
  • 信丰网站建设广州网页搜索排名提升
  • 怎么创建企业网站seo网络优化培训
  • 谢家华做网站加拿大搜索引擎
  • 做农业网站怎么赚钱外链链接平台
  • 企业咨询管理公司经营范围百度推广优化怎么做
  • 网站前台的网址广州推广工具
  • 安徽合肥网站制作自媒体发布软件app
  • 网站图片延时加载网页广告怎么做
  • 福建省幕墙建设网站要报备吗百度账号个人中心
  • 盘锦做网站选哪家好优秀网站设计赏析
  • wordpress 3.0.1 漏洞seo优化工具大全
  • 用照片做视频的模板下载网站整站优化seo平台
  • 隆尧建设局网站seo关键词排名优化评价
  • 网站图片等比缩小成都市seo网站公司
  • udacity 网站开发今日疫情最新消息
  • 现在什么网站比较火做推广新网站友链
  • 网站动态图怎么做做百度推广怎么做才能有电话
  • 上海 网站备案系统个人免费建站系统
  • 婚纱网站免费源码域名查询 ip
  • 网站服务器基本配置线在科技成都网站推广公司
  • 响应式网站建设seo搜索引擎是什么意思