我有两个表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 ;
但是效果不好!谁能指出是哪里出了问题?
触发器被认为是指 NEW
或 OLD
所以这是个问题。 我想你要的逻辑是。
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 ;