2013-10-08 4 views
1

У меня есть стол со столбцами 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, но образца нет.

+0

Ваш тэг был неправильным. [psql] (http://stackoverflow.com/tags/psql/info) является клиентом comman line Postgres. Вы хотите, чтобы Postgres. Также, пожалуйста, посмотрите варианты форматирования ... –

ответ

1

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

Вам нужен multicolumn index вместо:

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

Предполагая, что ваши столбцы NOT NULL. Кроме того, также рассмотрите:
How to add a conditional unique index on PostgreSQL

Смежные вопросы