【发布时间】:2021-01-21 17:57:23
【问题描述】:
我猜答案是否定的,但是...是否可以仅对复合主键的一部分强制唯一性?
create table foo (
id integer,
yesno boolean,
extra text,
primary key (id, yesno, extra)
)
这里的想法是我希望 id + yesno 对于这个特定的表是唯一的,但我想在索引中包含 extra 以便我可以利用 Postgres index-only scans。
是的,我可以在 id + yesno 上创建第二个唯一索引,但这会很浪费。
【问题讨论】:
-
根据定义,主键不能是“部分”
-
默认情况下,主键是
NOT NULL和UNIQUE的组合。无论如何,TEXT字段上的索引似乎“很重”。
标签: postgresql