Changes between Version 6 and Version 7 of Trigger Functions


Ignore:
Timestamp:
05/18/26 14:32:45 (8 days ago)
Author:
193284
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Trigger Functions

    v6 v7  
    1515=== SQL Code ===
    1616
    17 {{{
    18 #!sql
    1917CREATE OR REPLACE FUNCTION check_venue_booking_overlap()
    2018RETURNS TRIGGER AS $$
     
    3129          AND vb.booking_id <> COALESCE(NEW.booking_id, -1)
    3230          AND (
    33                 (NEW."date" + NEW.start_time) < (vb."date" + vb.end_time)
    34             AND (NEW."date" + NEW.end_time)   > (vb."date" + vb.start_time)
     31
     32                ((NEW."date" + NEW.start_time) >= (vb."date" + vb.start_time)
     33                 AND (NEW."date" + NEW.start_time) < (vb."date" + vb.end_time))
     34
     35                OR
     36
     37                ((NEW."date" + NEW.end_time) > (vb."date" + vb.start_time)
     38                 AND (NEW."date" + NEW.end_time) <= (vb."date" + vb.end_time))
     39
     40                OR
     41
     42                ((NEW."date" + NEW.start_time) <= (vb."date" + vb.start_time)
     43                 AND (NEW."date" + NEW.end_time) >= (vb."date" + vb.end_time))
     44
     45                OR
     46
     47                ((NEW."date" + NEW.start_time) >= (vb."date" + vb.start_time)
     48                 AND (NEW."date" + NEW.end_time) <= (vb."date" + vb.end_time))
    3549          )
    3650    ) THEN
     
    4862FOR EACH ROW
    4963EXECUTE FUNCTION check_venue_booking_overlap();
    50 }}}
    5164
    5265== 2. Photographer Booking Conflict Prevention ==
     
    5871=== SQL Code ===
    5972
    60 {{{
    61 #!sql
    6273CREATE OR REPLACE FUNCTION check_photographer_booking_overlap()
    6374RETURNS TRIGGER AS $$
     
    7485          AND pb.booking_id <> COALESCE(NEW.booking_id, -1)
    7586          AND (
    76                 (NEW."date" + NEW.start_time) < (pb."date" + pb.end_time)
    77             AND (NEW."date" + NEW.end_time)   > (pb."date" + pb.start_time)
     87
     88                ((NEW."date" + NEW.start_time) >= (pb."date" + pb.start_time)
     89                 AND (NEW."date" + NEW.start_time) < (pb."date" + pb.end_time))
     90
     91                OR
     92
     93                ((NEW."date" + NEW.end_time) > (pb."date" + pb.start_time)
     94                 AND (NEW."date" + NEW.end_time) <= (pb."date" + pb.end_time))
     95
     96                OR
     97
     98                ((NEW."date" + NEW.start_time) <= (pb."date" + pb.start_time)
     99                 AND (NEW."date" + NEW.end_time) >= (pb."date" + pb.end_time))
     100
     101                OR
     102
     103                ((NEW."date" + NEW.start_time) >= (pb."date" + pb.start_time)
     104                 AND (NEW."date" + NEW.end_time) <= (pb."date" + pb.end_time))
    78105          )
    79106    ) THEN
     
    91118FOR EACH ROW
    92119EXECUTE FUNCTION check_photographer_booking_overlap();
    93 }}}
    94120
    95121== 3. Band Booking Conflict Prevention ==
     
    101127=== SQL Code ===
    102128
    103 {{{
    104 #!sql
    105129CREATE OR REPLACE FUNCTION check_band_booking_overlap()
    106130RETURNS TRIGGER AS $$
     
    117141          AND bb.booking_id <> COALESCE(NEW.booking_id, -1)
    118142          AND (
    119                 (NEW."date" + NEW.start_time) < (bb."date" + bb.end_time)
    120             AND (NEW."date" + NEW.end_time)   > (bb."date" + bb.start_time)
     143
     144                ((NEW."date" + NEW.start_time) >= (bb."date" + bb.start_time)
     145                 AND (NEW."date" + NEW.start_time) < (bb."date" + bb.end_time))
     146
     147                OR
     148
     149                ((NEW."date" + NEW.end_time) > (bb."date" + bb.start_time)
     150                 AND (NEW."date" + NEW.end_time) <= (bb."date" + bb.end_time))
     151
     152                OR
     153
     154                ((NEW."date" + NEW.start_time) <= (bb."date" + bb.start_time)
     155                 AND (NEW."date" + NEW.end_time) >= (bb."date" + bb.end_time))
     156
     157                OR
     158
     159                ((NEW."date" + NEW.start_time) >= (bb."date" + bb.start_time)
     160                 AND (NEW."date" + NEW.end_time) <= (bb."date" + bb.end_time))
    121161          )
    122162    ) THEN
     
    134174FOR EACH ROW
    135175EXECUTE FUNCTION check_band_booking_overlap();
    136 }}}
     176
    137177
    138178== 4. Attendance Consistency Validation ==