Как встроить триггер в MySQL, который обновляет таблицу при добавлении или удалении? - PullRequest
0 голосов
/ 01 мая 2020

У меня есть две таблицы очередей (assign_id, actual_time) Queue_Summary (date, doctor_id, num_of_patients)

Первая - это все очереди, а вторая - сколько очередей для каждого врача на определенную дату. Мне нужно создать триггер, который обновляет num_of_patients, каждый раз, когда в очереди добавляется очередь, мне нужно добавить к доктору num_of_patients в эту дату. Также при удалении.

Я только что посчитал количество очередей с указанием doctor_id и даты.

delimiter //
 CREATE TRIGGER update_queue_summary 
    BEFORE UPDATE ON queue
    FOR EACH ROW
        BEGIN
            update queue_summary as qs set num_of_patient = ( 
                select count(appointment_id) 
                from queue as q join appointment as a on appointment_id
                where a.doctor_id=qs.doctor_id and date(qs.actual_time)=date(qs.date())
                group by appointment_id
                ) where doctor_id=qs.doctor_id and date(qs.actual_time)=date(qs.date());
       END;//
 delimiter ;

Но это не работает хорошо! Может кто-то указать, где ошибка?

1 Ответ

2 голосов
/ 01 мая 2020

Триггер должен ссылаться на NEW и / или OLD, так что это проблема. Я думаю, что логика c вы хотите:

delimiter //

CREATE TRIGGER update_queue_summary 
BEFORE UPDATE ON queue
FOR EACH ROW
    BEGIN
        update queue_summary
            set num_of_patient = num_of_patient + 1
            where doctor_id = new.doctor_id and date = date(new.actual_time);
        update queue_summary
            set num_of_patient = num_of_patient - 1
            where doctor_id = old.doctor_id and date = date(old.actual_time);
   END;//

 delimiter ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...