26 lines
747 B
PL/PgSQL
26 lines
747 B
PL/PgSQL
-- Permit same-day (zero-night) processed Finance records while preserving exact date arithmetic.
|
|
-- PostgreSQL 15+
|
|
-- Target database: booking_test.
|
|
|
|
BEGIN;
|
|
|
|
ALTER TABLE finance.daily_records
|
|
DROP CONSTRAINT daily_records_dates_and_nights_valid;
|
|
|
|
ALTER TABLE finance.daily_records
|
|
ADD CONSTRAINT daily_records_dates_and_nights_valid CHECK (
|
|
arrival IS NULL
|
|
OR departure IS NULL
|
|
OR nights IS NULL
|
|
OR (
|
|
departure >= arrival
|
|
AND nights = departure - arrival
|
|
)
|
|
);
|
|
|
|
COMMENT ON CONSTRAINT daily_records_dates_and_nights_valid
|
|
ON finance.daily_records IS
|
|
'Allows processed same-day records with zero nights; rejects negative stays and any date/night mismatch.';
|
|
|
|
COMMIT;
|