在PostgreSQL中为分区表添加主键

7
CREATE TABLE list_parted (a int, b int) PARTITION BY LIST(a);

CREATE TABLE list_part_1 PARTITION OF list_parted FOR VALUES IN (1, 2, 3);
CREATE TABLE list_part_2 PARTITION OF list_parted FOR VALUES IN (6, 7, 8);

INSERT INTO list_parted VALUES (7, 77);

ALTER TABLE list_parted ADD PRIMARY KEY (b);

当我试图为以上表格添加主键时,我遇到了以下错误:
ERROR:在PRIMARY KEY约束定义中列不足 SQL状态0A000 详细信息:表“list_parted”的PRIMARY KEY约束缺少分区键的一部分,即“a”列。
1个回答

17

您需要在主键声明中包含分区列,或者创建一个同时包含两个列的唯一索引(UNIQUE idx),这将得到相同的结果。

CREATE TABLE customer(
  id int,
  country_code character varying(5),
  name character varying(100),
  PRIMARY KEY (id, country_code)
)
PARTITION BY LIST (country_code);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接