PostgreSQL:如何让 ADD UNIQUE 工作

PostgreSQL: How to get ADD UNIQUE to work

我截断了我的 table 然后添加了独特的:

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 和最早的年份是唯一的集合。 oldestyear 有时会为空,但尽管如此它仍然是一个独特的集合。

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

create unique index on mytable (id,loan_type,term,coalesce(oldestyear, -42));