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 impusesse a regra de que um produto só pode ter um preço em uma quantidade específica em um intervalo de datas (via where <date> BETWEEN start_date AND end_date
).
Esse tipo de restrição baseada em intervalo é factível?
Sim, você pode usar uma
EXCLUDE
restrição, que é uma generalização deUNIQUE
restrições:A restrição pode ser interpretada como dizendo:
O
'[]'
é para o intervalo de datas com tudo incluído desejado (o padrão é[)
para tipos de intervalo).Consulte a documentação sobre restrições em tipos de intervalo . Você provavelmente também precisará adicionar a extensão executando (uma vez, para cada banco de dados em que deseja instalá-la):