1

我有一张桌子,里面有login, lineno, line.
每个都login可以有 3lineno和 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但没有示例。

4

1 回答 1

1

您对部分索引的条件:login=login没有达到您的预期。它总是评估为TRUE, if login is NOT NULL,这对您的情况完全没有帮助。

您需要一个多列索引

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

假设您的列是NOT NULL. 否则,还要考虑:
How to add a conditional unique index on PostgreSQL

于 2013-10-14T10:45:58.407 回答