Betrachten Sie eine prices
Tabelle mit diesen Spalten:
id integer primary key
product_id integer -- foreign key
start_date date not null
end_date date not null
quantity integer
price numeric
Ich möchte, dass die Datenbank die Regel erzwingt, dass ein Produkt nur einen Preis zu einer bestimmten Menge in einem Datumsbereich (über where <date> BETWEEN start_date AND end_date
) haben kann.
Ist eine solche bereichsbezogene Einschränkung möglich?
daterange
es genau dasselbe ist, da es sich um eine exklusive Untergrenze handelt, aber das lässt sich leicht beheben. Sollte ich meine Daten wirklich migrieren, um einendaterange
Spaltentyp zu verwenden (kann dies zu einer separaten Frage machen, wenn dies besser ist), oder ist diese zweispaltige Sache sinnvoll?(product_id, start_date)
. Bei einer Daterange müsste das ein Index für(product_id, lower(range_column))