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

PostgreSQL创建带NULL过滤条件的唯一约束报语法错如何解决

报错原因

PostgreSQL 原生的 UNIQUE 约束语法不支持直接附加 WHERE 条件实现部分范围的唯一性校验,你写的SQL语句不符合ALTER TABLE ADD CONSTRAINT的语法规范,因此触发语法报错。

修复方案

要实现"仅未购买(purchased_at为NULL)的车辆,user_id和name组合唯一"的需求,使用部分唯一索引即可,效果和你预期的唯一约束完全一致,写法如下:

CREATE UNIQUE INDEX cars_user_id_name_purchased_at_key
ON cars (user_id, name)
WHERE purchased_at IS NULL;

执行后就会自动生效:未购买的车辆不允许出现user_id和name重复的记录,已经购买(purchased_at非空)的记录不受该规则限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:48:01