PostgreSQL:如何使ADD UNIQUE工作

问题描述 投票:0回答:1

我截断了我的表然后添加了唯一的:

ALTER TABLE mytable
ADD UNIQUE (id,loan_type,term,oldestyear)

插入数据后,它仍然重复,我做错了什么?

id       |loan_type      |apr   |term|oldestyear|valid_period                     
---------|---------------|------|----|----------|---------------------------------
     8333|auto new       |0.0249|  36|          |["2019-02-26 22:48:07.305304-08",
     8333|auto new       |0.0249|  36|          |["2019-02-26 22:47:38.421624-08",

我希望id,loan_type,term和&year year是一个独特的集合。有时候,年龄将为空,但尽管如此,它仍然是一个独特的集合。

postgresql unique-constraint
1个回答
2
投票

如果您可以找到至少一个无效(非空)值,则可以在表达式上创建唯一索引,将NULL值转换为非空值,以便比较将它们视为相同:

create unique index on mytable (id,loan_type,term,coalesce(oldestyear, -42));
© www.soinside.com 2019 - 2024. All rights reserved.