Changes between Version 2 and Version 3 of DatabaseProgramming


Ignore:
Timestamp:
06/14/26 15:41:27 (3 days ago)
Author:
231072
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DatabaseProgramming

    v2 v3  
    11== Опис
    2 
    3 <syntaxhighlight lang="sql">
    4 CREATE OR REPLACE FUNCTION trg_prevent_double_booking()
    5 RETURNS TRIGGER
    6 AS $$
    7 BEGIN
    8     IF NEW.booking_status IN ('PENDING','CONFIRMED') THEN
    9         IF EXISTS (
    10             SELECT 1
    11             FROM bookings b
    12             WHERE b.room_id = NEW.room_id
    13               AND b.booking_status IN ('PENDING','CONFIRMED')
    14               AND daterange(b.check_in_date, b.check_out_date, '[)')
    15                   && daterange(NEW.check_in_date, NEW.check_out_date, '[)')
    16         ) THEN
    17             RAISE EXCEPTION 'Room % is already booked', NEW.room_id;
    18         END IF;
    19     END IF;
    20 
    21     RETURN NEW;
    22 END;
    23 $$ LANGUAGE plpgsql;
    24 
    25 CREATE OR REPLACE TRIGGER prevent_double_booking
    26 BEFORE INSERT ON bookings
    27 FOR EACH ROW
    28 EXECUTE FUNCTION trg_prevent_double_booking();
    29 </syntaxhighlight>
     2<pre>
     3CREATE OR REPLACE FUNCTION ...
     4...
     5</pre>