postgreSQL 中的唯一索引

unique index in postgreSQL

我有一个带有 唯一索引

的 PostgreSQL table
CREATE SEQUENCE public.batterysensorhistory_id_seq NO MINVALUE NO 
MAXVALUE NO CYCLE;
CREATE TABLE batterysensorhistory
(
    id integer DEFAULT 
nextval('batterysensorhistory_id_seq'::regclass) PRIMARY KEY NOT NULL,
batteryid uuid NOT NULL,
sensorid integer NOT NULL,
isactivelink boolean DEFAULT false NOT NULL,
...
);

create unique index on batterysensorhistory (batteryid, sensorid, isactivelink)
where isactivelink = TRUE;

我想设置一个约束,只有具有相同 batteryid && sensorid 的一行可以有 isactivelink = true,但是我的 unique index不工作。

此外,我在 sqlfiddle 中创建了这个示例:http://sqlfiddle.com/#!15/c3b37/1

知道我的代码有什么问题吗?

我想你想要:

create unique index on batterysensorhistory (batteryid, sensorid)
    where isactivelink = TRUE;

但是你的版本应该可以。

Here 就是一个失败的例子。