У меня есть типичный сайт на основе LAMP + Zend Framework, где у меня есть базовая таблица и сводная таблица.Сводная таблица используется для отображения данных в отчетах.
Базовая таблица -
ID | Status
1 | 1
2 | 1
3 | 2
4 | 2
5 | 1
6 | 1
Сводная таблица -
Status | Count
1 | 4
2 | 2
Базовая таблица будет изменяться (вставлять, обновлять, удалять) в среднем 20 раз в день.
В настоящее время я использую триггеры для вызова хранимой процедуры, которая обновит сводную таблицу на основебазовая таблица.
Это хранимая процедура.
CREATE PROCEDURE UpdateSummary()
BEGIN
UPDATE summary a
INNER JOIN
(SELECT status, count(*) c from base group by status) b
ON a.status = b.status
SET a.count = b.c;
END
И у меня есть три триггера (по одному для каждого - Вставить, Удалить и Обновить).Я показал образец вставки один ниже.Другие аналогичны этому.
CREATE TRIGGER S_T_TRIGGER_I
AFTER INSERT ON base
FOR EACH ROW
CALL UpdateSummary();
Я хочу, чтобы сводная таблица обновлялась до последних значений всегда .Использование триггеров и хранимых процедур, как это является лучшим способом или есть элегантный способ сделать это?