Postgresql:相同高级键中的唯一值但直接子键不同

Postgresql: unique value within the same high-level key(s) but different directly subkey

我有一个 table 这样的:

CREATE TABLE IF NOT EXISTS tt
(key1     integer
,key2     integer
,data     varchar(8)

,CONSTRAINT cst_tt_key1_key2 UNIQUE (key1, key2)
);

CREATE INDEX idx_tt_data_trigram
    ON data
 USING gist(data gist_trgm_ops);

我想在 key1 的相同值下具有 data 的唯一值。

按顺序来说,可能有以下记录。

1,  1,  "Postgres"
2,  1,  "Postgres"

但是,以下记录是不允许的。

1,  1,  "Postgres"
1,  2,  "Postgres"

知道如何使用 CHECKCONSTRAINT 吗?

只需创建一个唯一索引。

create unique index on tt(key1, data)