Changes between Version 60 and Version 61 of DatabaseProgramming


Ignore:
Timestamp:
05/20/26 22:11:25 (6 days ago)
Author:
231109
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DatabaseProgramming

    v60 v61  
    147147=== Процедура 2 : cancel_reservation
    148148
    149 [[Image("Screenshot 2026-05-20 161319.png", 300px)]]
    150 
     149{{{
     150#!sql
     151CREATE OR REPLACE PROCEDURE cancel_reservation(p_reservation_id INT)
     152AS $$
     153BEGIN
     154    UPDATE Reservation
     155    SET status = 'Cancelled'
     156    WHERE reservation_id = p_reservation_id;
     157
     158    UPDATE Ticket
     159    SET ticket_status = 'Cancelled'
     160    WHERE Paymentpayment_id IN (
     161        SELECT payment_id
     162        FROM Payment
     163        WHERE Reservationreservation_id = p_reservation_id
     164    );
     165    RAISE NOTICE 'Reservation % has been canceled successfully.', p_reservation_id;
     166END;
     167$$ LANGUAGE plpgsql;
     168
     169SELECT * FROM Reservation where reservation_id = 17;
     170
     171SELECT * FROM Ticket
     172WHERE Paymentpayment_id IN (
     173    SELECT payment_id FROM Payment WHERE Reservationreservation_id = 17
     174);
     175
     176CALL cancel_reservation(17);
     177
     178}}}
    151179Оваа процедура ја поништува резервацијата и автоматски ги ажурира поврзаните податоци. Кога ќе се повика, статусот на резервацијата се менува во "Cancelled", а сите билети поврзани со таа резервација исто така се означуваат како "Cancelled" Се користи за правилно откажување на резервации и одржување конзистентност меѓу резервациите, плаќањата и билетите.
    152180