-- 1. Начинаем транзакцию (меняем статус номера на Занят)
UPDATE Hotel_Rooms SET Is_Free = FALSE WHERE Room_Number = 101;
-- 2. Пытаемся добавить запись о бронировании (гость оплатил)
INSERT INTO Bookings (Booking_ID, Room_Number, Guest_Name, Paid_Amount)
VALUES (1, 101, 'Иван Иванов', 5000.00);
-- 3. ИМИТАЦИЯ ОШИБКИ (карта не прошла, транзакция сбоит)
-- В этот момент мы понимаем, что бронь не удалась, и делаем ОТКАТ:
ROLLBACK;
-- 1. Меняем статус номера на Занят
UPDATE Hotel_Rooms SET Is_Free = FALSE WHERE Room_Number = 101;
-- 2. Добавляем успешную запись о бронировании
INSERT INTO Bookings (Booking_ID, Room_Number, Guest_Name, Paid_Amount)
VALUES (2, 101, 'Петр Петров', 7500.00);
-- 3. ФИКСИРУЕМ ИЗМЕНЕНИЯ (COMMIT)
COMMIT;