Pertimbangkan prices
tabel dengan kolom ini:
id integer primary key
product_id integer -- foreign key
start_date date not null
end_date date not null
quantity integer
price numeric
Saya ingin database memberlakukan aturan bahwa suatu produk hanya dapat memiliki satu harga pada jumlah tertentu dalam rentang tanggal (via where <date> BETWEEN start_date AND end_date
).
Apakah kendala berbasis rentang seperti ini bisa dilakukan?
daterange
adalah persis sama karena itu eksklusif batas bawah, tapi itu mudah untuk memperbaiki. Haruskah saya benar-benar memigrasikan data saya untuk menggunakandaterange
tipe kolom (dapat menjadikan itu pertanyaan terpisah jika itu lebih baik) atau apakah hal dua kolom ini masuk akal?(product_id, start_date)
. Dengan daterange, itu harus menjadi indeks pada(product_id, lower(range_column))