Changes between Version 42 and Version 43 of Transactions


Ignore:
Timestamp:
02/10/26 18:12:14 (3 weeks ago)
Author:
222039
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Transactions

    v42 v43  
    127127}}}
    128128
     129===== Procedure Change Seat (атомична промена)
     130Ако новото седиште е веќе земено, не смееме да го изгубиме старото -> промената мора да биде all or nothing.
    129131
     132{{{
     133DELIMITER $$
     134
     135CREATE PROCEDURE sp_change_seat(
     136  IN p_booking_id INT,
     137  IN p_new_seat CHAR(4)
     138)
     139BEGIN
     140  DECLARE v_flight_id INT;
     141  DECLARE exit handler FOR SQLEXCEPTION
     142  BEGIN
     143    ROLLBACK;
     144    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Seat change failed (transaction rolled back).';
     145  END;
     146
     147  START TRANSACTION;
     148
     149  SELECT flight_id INTO v_flight_id
     150  FROM booking
     151  WHERE booking_id = p_booking_id
     152  FOR UPDATE;
     153
     154  UPDATE booking
     155  SET seat = p_new_seat
     156  WHERE booking_id = p_booking_id;
     157
     158  COMMIT;
     159END$$
     160
     161DELIMITER ;
     162}}}
     163
     164
     165