Postgresql
自定義唯一約束,僅在一列具有特定值時強制執行
是否可以有如下自定義唯一約束?假設我有兩個 cols
subset
和type
,兩個字元串(儘管數據類型可能無關緊要)。如果
type
是“真”,那麼我希望 和 的組合type
是subset
獨一無二的。否則,沒有約束。我在 Debian 上使用 PostgreSQL 8.4。
換句話說,您希望列中的值在該列為“真”
subset
的行中是唯一的。部分唯一索引 將執行此操作:type
CREATE UNIQUE INDEX tbl_some_name_idx ON tbl (subset) WHERE type = 'true';
數據類型確實很重要。如果該列
type
是boolean
(可能應該是),您可以簡化:CREATE UNIQUE INDEX tbl_some_name_idx ON tbl (subset) WHERE type;
通過這種方式,您甚至可以與
NULL
unique 進行組合,否則這是不可能的。看: