如何在MySQL中建立一个Triger,在添加或删除表时更新表?

问题描述 投票:0回答:1

我有两个表Queue (appointment_id, actual_time)Queue_Summary (date, doctor_id, num_of_patients)

第一个是所有的队列,第二个是每个医生在某个日期有多少队列.我需要建立一个更新num_of_patients的触发器,每次在Queue中增加一个队列,我需要在该日期增加到一个医生num_of_patients。同时在删除时。

我只是统计了给定医生_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 ;

但是效果不好!谁能指出是哪里出了问题?

mysql sql
1个回答
2
投票

触发器被认为是指 NEWOLD所以这是个问题。 我想你要的逻辑是。

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 ;
© www.soinside.com 2019 - 2024. All rights reserved.