Considere uma prices
tabela com estas colunas:
id integer primary key
product_id integer -- foreign key
start_date date not null
end_date date not null
quantity integer
price numeric
Gostaria que o banco de dados aplicasse a regra de que um produto pode ter apenas um preço em uma quantidade específica em um período (via where <date> BETWEEN start_date AND end_date
).
Esse tipo de restrição baseada em intervalo é possível?
daterange
seja exatamente o mesmo, pois é um limite inferior exclusivo, mas é fácil de corrigir. Eu realmente deveria estar migrando meus dados para usar umdaterange
tipo de coluna (isso pode ser uma pergunta separada, se for melhor) ou essa coisa de duas colunas é razoável?(product_id, start_date)
. Com uma fonte de dados, isso teria que ser um índice em(product_id, lower(range_column))