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 就是一个失败的例子。
我有一个带有 唯一索引
的 PostgreSQL tableCREATE 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 就是一个失败的例子。