postgreSQL中的唯一索引

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postgreSQL中的唯一索引相关的知识,希望对你有一定的参考价值。

我有一个具有唯一索引的PostgreSQL表

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,但我的唯一索引不起作用。

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

我的代码有什么想法,有什么不对吗?

答案

我想你想要:

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

但是你的版本应该可行。

Here就是它失败的一个例子。

以上是关于postgreSQL中的唯一索引的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL 唯一索引和字符串大小写

删除 PostgreSQL 中索引的唯一性

错误:分布式表的唯一索引必须包含散列分布列。啥时候从 postgresql 迁移到 postgresql-xl

如何在Postgresql查询中使用多个“唯一索引推断”

从估算日期开始每个唯一用户的前六个月数据 - PostgreSQL

Postgresql:条件唯一约束