MySQL, EVENT IF. Хочу прописать событие, если в booking в поле date_out < NOW() тогда идет обновление в другой таблице по условию

booking

 +----+--------+-------+----------+-------------------+--------+----------+------------+------------+---------------------+
    | id | fname  | lname | pname    | phone             | korpus | myRoomId | dateIn     | dateOut    | bookedIn            |
    +----+--------+-------+----------+-------------------+--------+----------+------------+------------+---------------------+
    |  1 | Иванов | Иван  | Иванович | +7(999)-999-99-99 |      1 |      201 | 2021-05-28 | 2021-05-30 | 2021-05-27 19:18:48 |
    +----+--------+-------+----------+-------------------+--------+----------+------------+------------+---------------------+

korpusOneRooms

+-------------------+---------------+---------------+
| roomsOneKorpus_id | typeOneKorpus | freeOneKorpus |
+-------------------+---------------+---------------+
|               200 |             2 |             2 |
|               201 |             2 |             1 |
|               202 |             2 |             2 |
|               203 |             2 |             2 |
|               204 |             2 |             2 |
|               205 |             2 |             2 |
+-------------------+---------------+---------------+

Доброго времени суток! Подскажите пожалуйста кто чем может

Предисловие - когда бронируют комнату в 1 корпусе и указывают № комнаты, то у этого № комнаты (который занесли в booking) вычитается (-1) из таблицы korpusOneRooms где поле roomsOneKorpus_id = myRoomId

Сейчас же я хочу сделать обратную процедуру, только с условием даты. То есть, если dateOut < текущей, то свободный номер должен восстанавливаться - прибавляться +1

Консоль на EVENT не ругается, но и он не работает

DELIMITER |
CREATE EVENT upateRooms
ON SCHEDULE EVERY 5 SECOND
    DO
    BEGIN
    IF booking.dateOut < NOW() THEN
            UPDATE stackoverflow.korpusOneRooms SET freeOneKorpus = freeOneKorpus + 1
        WHERE korpusOneRooms.roomsOneKorpus_id = booking.myRoomId;
    END IF;
    END |
DELIMITER ;

Не могу понять, что я делаю не так?


Ответы (1 шт):

Автор решения: Константин
    DELIMITER |
    CREATE EVENT UpdateOneKorpus
    ON SCHEDULE
    EVERY 1 DAY
    STARTS '2021-05-30 00:00:00'
    ON COMPLETION PRESERVE
    DO
    BEGIN
    UPDATE korpus_one_rooms a INNER JOIN booking b ON a.rooms_one_korpus_id = b.my_room_id SET a.free_one_korpus = IF (b.date_out = CURRENT_DATE() AND b.korpus = 1, a.free_one_korpus + 1, a.free_one_korpus);
    END |
    DELIMITER ;
→ Ссылка