CREATE TABLE article (
day integer,
is_chosen boolean
)
CREATE UNIQUE INDEX day_is_chosen_unique_index ON article (day, is_chosen);
上面将给出一个关于两列的唯一索引,这意味着在给定的一天我们可以选择一篇文章和一篇未选择的文章。
我只需要is_chosen字段的唯一索引。换句话说,在任何一天,我们只能选择一篇文章和多篇未选择的文章
也许是这样的:
CREATE UNIQUE INDEX day_is_chosen_unique_index ON article (day, is_chosen true);
我将如何创建此复合索引?
答案 0 :(得分:1)
这个部分索引就足够了:
CREATE TABLE article (
id INT
, when_day INT
, is_chosen BOOLEAN DEFAULT FALSE
);
CREATE UNIQUE INDEX day_is_chosen_unique_index
ON article ( when_day )
WHERE is_chosen;
注意:“DAY”是SQL中的保留关键字,因此最好不要将其用作列名。