37 lines
881 B
PL/PgSQL
37 lines
881 B
PL/PgSQL
-- DESTRUCTIVE rollback draft for migration 003.
|
|
-- Do not execute while a retained same-day/zero-night Finance record exists.
|
|
-- Target database: booking_test.
|
|
|
|
BEGIN;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (
|
|
SELECT 1
|
|
FROM finance.daily_records
|
|
WHERE arrival IS NOT NULL
|
|
AND departure = arrival
|
|
AND nights = 0
|
|
) THEN
|
|
RAISE EXCEPTION
|
|
'remove or migrate same-day zero-night records before rolling back migration 003';
|
|
END IF;
|
|
END;
|
|
$$;
|
|
|
|
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
|
|
)
|
|
);
|
|
|
|
COMMIT;
|