Postgres两列上的唯一约束:整数和布尔值

gre*_*alu 8 postgresql constraints unique

我想找到一种方法来为我的数据库中的一个主题存储多个地址,每个主题只有一个默认地址.

简而言之,我们假设有一张桌子:

CREATE TABLE test
(
  id integer NOT NULL,
  active boolean NOT NULL,
  CONSTRAINT pk_id PRIMARY KEY (id)
)
Run Code Online (Sandbox Code Playgroud)

对于表中的每个id,最多只能有1个真有效值.

我怎么能实现这个目标?

谢谢.

kwo*_*orr 13

部分索引是你想要的:

create unique index some_index on test (id) where active;
Run Code Online (Sandbox Code Playgroud)

由于@ThiefMaster声明主要索引应该被删除.

  • PK只是UNIQUE和NOT NULL约束的总和。 (2认同)