2013-10-08 3 views
1

테이블이 있는데, 열이 login, lineno, line 인 테이블이 있습니다.
login은 3 lineno 및 3 lines을 가질 수 있습니다. 각 linenologin이 동일하면 고유해야합니다.한 테이블의 고유 인덱스

이 나는 ​​시도했다 : 그것은 작동하지 않습니다

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)는 Postgres의 comman 라인 클라이언트입니다. 당신은 Postgres를 원한다. 또한 서식 옵션을 살펴보십시오. –

답변

1

partial index에 대한 상태 : login=login은 예상 한 것처럼 보이지 않습니다. 항상TRUE으로 계산되며, login is NOT NULL 인 경우 귀하의 경우에 도움이되지 않습니다. 당신의 열이 NOT NULL입니다 가정

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

:

당신은 대신 multicolumn index이 필요합니다. 또한 다음을 고려하십시오.
How to add a conditional unique index on PostgreSQL