Уникальный индекс в одной таблице

У меня есть таблица со столбцами login, lineno, line.
Каждый login может иметь 3 lineno и 3 lines, каждый lineno должен быть уникальным, если login один и тот же.

Я пробовал:

create unique index unique_Lineno on rs_line (Lineno) where login=login;

Это не работает. Кто-нибудь может мне помочь?
Я прочитал http://www.postgresql.org/docs/8.0/static/indexes-unique.html, но образца нет.


person user2858149    schedule 08.10.2013    source источник
comment
Ваш тег был неправильным. psql — это клиент командной строки Postgres. Вам нужен Постгрес. Также обратите внимание на параметры форматирования...   -  person Erwin Brandstetter    schedule 14.10.2013


Ответы (1)


Ваше условие для частичного индекса: login=login не подходит то, что вы, кажется, ожидаете. Он всегда оценивается как TRUE, если login is NOT NULL, что совсем не помогает в вашем случае.

Вам нужен многоколоночный индекс. вместо:

CREATE UNIQUE INDEX rs_line_uni_idx ON rs_line (login, lineno);

Предполагая, что ваши столбцы NOT NULL. В противном случае также рассмотрите:
Как добавить условный уникальный индекс в PostgreSQL

person Erwin Brandstetter    schedule 14.10.2013