PostgreSQL: как заставить ADD UNIQUE работать - PullRequest
0 голосов
/ 27 февраля 2019

Я обрезал свою таблицу, затем добавил уникальное значение:

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, срок, & самый старый год, чтобы быть уникальным набором.Старейший год иногда будет нулевым, но это все же уникальный набор, несмотря на это.

1 Ответ

0 голосов
/ 27 февраля 2019

Если вы можете найти хотя бы одно недопустимое (не нулевое) значение, то вы можете создать уникальный индекс для выражения, которое преобразует значение NULL в ненулевое значение, чтобы сравнение воспринимало их как идентичные:

create unique index on mytable (id,loan_type,term,coalesce(oldestyear, -42));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...