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 ;