首页 > 解决方案 > 有没有办法让唯一索引忽略旧数据?

问题描述

我需要做的是阻止行在值编号、系列和型号处重复。我最初的想法是做这样的事情:

CREATE UNIQUE INDEX idx_fiscal_number
ON Fiscal(number, serie, model);

问题是这个数据库真的很旧,而且已经有很多数据重复了。所以我的问题是:有没有办法让这个唯一索引现在开始验证并接受已经存在的旧数据?

标签: postgresql

解决方案


如果您可以使用现有列表达条件“旧”,则可以尝试创建部分索引。例如,如果您有一个“年龄”列

CREATE UNIQUE INDEX idx_fiscal_number_partial 
ON fiscal(number, serie, model)
WHERE age < 1000;

请参阅https://www.postgresql.org/docs/current/indexes-partial.html


推荐阅读