плохо знакомы с MySQL и базами данных и нуждаются в некоторой помощи. У меня есть таблицы:
назначение
- назначение_идентификатора ПК, <- </li>
- имя_пункта int,
- doctor_id int , <- </li>
- meeting_time DateTime.
очередь
- meeting_id int PK, <- </li>
- фактическое время DateTime.
queue_summary
- date datetime,
- doctor_id int PK, <- </li>
- num_of_patients int , <- </li>
Мне нужно написать триггер, который обновит num_of_patients, добавив +1 к записи в строке, которую doctor_id в queue_summary перекрывается, с новой строкой, вставленной в queue
, что соответствует назначению (для извлечения doctor_id).
отл. в случае вставки в queue
:
![insertion to queue table](https://i.stack.imgur.com/98xv5.png)
статус таблицы встреч:
![enter image description here](https://i.stack.imgur.com/hdIPI.png)
необходимо обновить:
![updating record](https://i.stack.imgur.com/gt58j.png)
Я написал следующий запрос select для извлечения doctor_id, на который повлияла вставка / удаление в очередь:
select appointment.doctor_id
from appointment as a
join queue as q
on a.appointment_id = q.appointment_id
where new.appointment_id = a.appointment_id;
, и я попытался записать триггер как затем:
delimiter //
CREATE TRIGGER tr_insert
BEFORE INSERT ON queue
FOR EACH ROW
BEGIN
set queue_summary.num_of_patients = queue_summary.num_of_patients+1
where queue_summary.doctor_id = (
select appointment.doctor_id
from appointment as a
join queue as q
on a.appointment_id = q.appointment_id
where new.appointment_id = a.appointment_id
)
END;//
delimiter ;
Но не повезло ... Я знаю, что у меня есть какая-то синтаксическая ошибка в части where
, но я не могу заставить ее работать ... Пожалуйста, посоветуйте, заранее спасибо!