Postgresql Postgres中的列表分区
我正在使用与Oracle兼容的Enterprise Postgres。这是我在数据库中创建的一个表Postgresql Postgres中的列表分区,postgresql,enterprisedb,Postgresql,Enterprisedb,我正在使用与Oracle兼容的Enterprise Postgres。这是我在数据库中创建的一个表 CREATE TABLE ALL_COUNTRIES ( COUNTRY_ID numeric(20,0), CHARACTERISTIC_NAME character varying(255) ) PARTITION BY LIST (COUNTRY_ID) ( PARTITION COUNTRY VALUES (484, 170, 7
CREATE TABLE ALL_COUNTRIES
(
COUNTRY_ID numeric(20,0),
CHARACTERISTIC_NAME character varying(255)
)
PARTITION BY LIST (COUNTRY_ID)
(
PARTITION COUNTRY VALUES (484, 170, 76, 360, 710) TABLESPACE my_tbs
);
创建了两个表。一个是主表,另一个是分区表
主表:
CREATE TABLE cdar_panel.all_countries
(
country_id numeric(20,0),
characteristic_name character varying(255)
)
分区表:
CREATE TABLE cdar_panel.all_countries_country
(
country_id ,
characteristic_name ,
CONSTRAINT all_countries_country_partition CHECK ((country_id = ANY (ARRAY['484'::numeric(20,0), '170'::numeric(20,0), '76'::numeric(20,0), '360'::numeric(20,0), '710'::numeric(20,0)])) AND country_id IS NOT NULL)
)
INHERITS (cdar_panel.all_countries)
我只想在检查约束中再添加两个字段。我可以知道怎么做吗
它不允许我这么做
1.改变约束。
2.不能删除“仅分区”。
3.无法再添加一个约束并删除原始约束
请提供帮助。下面的示例删除sales表的一个分区。使用以下命令创建销售表:
CREATE TABLE sales
(
dept_no number,
part_no varchar2,
country varchar2(20),
date date,
amount number
)
PARTITION BY LIST(country)
(
PARTITION europe VALUES('FRANCE', 'ITALY'),
PARTITION asia VALUES('INDIA', 'PAKISTAN'),
PARTITION americas VALUES('US', 'CANADA')
);
查询“所有分区”选项卡“分区”视图将显示分区名称:
acctg=# SELECT partition_name, server_name, high_value FROM ALL_TAB_PARTITIONS;
partition_name | server_name | high_value
----------------+-------------+---------------------
europe | seattle | 'FRANCE', 'ITALY'
asia | chicago | 'INDIA', 'PAKISTAN'
americas | boston | 'US', 'CANADA'
(3 rows)
要从sales表中删除americas分区,请调用以下命令:
ALTER TABLE sales DROP PARTITION americas;
查询ALL_选项卡_PARTITIONS视图表明该分区已成功删除:
acctg=# SELECT partition_name, server_name, high_value FROM ALL_TAB_PARTITIONS;
partition_name | high_value
----------------+---------------------
asia | 'INDIA', 'PAKISTAN'
europe | 'FRANCE', 'ITALY'
(2 rows)
我希望这将有助于删除分区:)下面的示例删除sales表的分区。使用以下命令创建销售表:
CREATE TABLE sales
(
dept_no number,
part_no varchar2,
country varchar2(20),
date date,
amount number
)
PARTITION BY LIST(country)
(
PARTITION europe VALUES('FRANCE', 'ITALY'),
PARTITION asia VALUES('INDIA', 'PAKISTAN'),
PARTITION americas VALUES('US', 'CANADA')
);
查询“所有分区”选项卡“分区”视图将显示分区名称:
acctg=# SELECT partition_name, server_name, high_value FROM ALL_TAB_PARTITIONS;
partition_name | server_name | high_value
----------------+-------------+---------------------
europe | seattle | 'FRANCE', 'ITALY'
asia | chicago | 'INDIA', 'PAKISTAN'
americas | boston | 'US', 'CANADA'
(3 rows)
要从sales表中删除americas分区,请调用以下命令:
ALTER TABLE sales DROP PARTITION americas;
查询ALL_选项卡_PARTITIONS视图表明该分区已成功删除:
acctg=# SELECT partition_name, server_name, high_value FROM ALL_TAB_PARTITIONS;
partition_name | high_value
----------------+---------------------
asia | 'INDIA', 'PAKISTAN'
europe | 'FRANCE', 'ITALY'
(2 rows)
我希望这将有助于删除分区:)