You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL按非主键LIST分区报错:PRIMARY KEY约束列不足

问题解决:PostgreSQL LIST分区表主键缺失分区键错误

错误原因

PostgreSQL要求分区表的主键必须包含所有分区键列。你当前的主键仅定义了id,但分区键是department,违反了这个规则,所以触发报错。

解决方法

将分区键department加入主键约束,确保主键包含所有分区键。修改后的建表语句如下:

create table employeedata(
    id varchar(20),
    department varchar(20),
    salary integer,
    designation varchar(20),
    primary key (id, department)
) partition by list (department);

创建分区示例

接下来可以为特定部门创建对应的分区,比如创建"HR"和"Engineering"部门的分区:

-- 创建HR部门分区
create table employeedata_hr partition of employeedata
for values in ('HR');

-- 创建Engineering部门分区
create table employeedata_engineering partition of employeedata
for values in ('Engineering');

补充说明

如果业务上id本身是全局唯一的,不需要依赖department来保证唯一性,你可以额外添加一个仅包含id的唯一约束:

alter table employeedata add unique (id);

这样既满足了分区表的主键规则,又能保证id的全局唯一性。

内容的提问来源于stack exchange,提问作者Suri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 08:23:11