use*_*882 3 sql postgresql unique
我进去了PostgreSQL 9.4。我有下表:
id name deleted
seril PK varchar(32) boolean NOT NULL
Run Code Online (Sandbox Code Playgroud)
是否可以将UNIQUE约束条件应用于所有行deleted = false?
您可以使用部分索引来实现。
从文档
存在WHERE子句时,将创建部分索引。部分索引是仅包含表一部分的条目的索引,通常一部分索引比表的其余部分更有用。例如,如果您有一个既包含开票订单又包含未开票订单的表,其中未开票订单占总表的一小部分,但这是经常使用的部分,则可以通过仅在该部分上创建索引来提高性能。另一个可能的应用是将WHERE与UNIQUE结合使用以对表的子集实施唯一性。有关更多讨论,请参见第11.8节。
参考:http : //www.postgresql.org/docs/9.4/static/sql-createindex.html
只是添加一个示例:
CREATE UNIQUE INDEX yourindexname onyourtable (seril)
WHERE deleted = false;
Run Code Online (Sandbox Code Playgroud)
从PostgreSQL 7.2版本开始支持。
| 归档时间: |
|
| 查看次数: |
456 次 |
| 最近记录: |