Установка триггера в MySQL для отслеживания изменений

Материал из BiTel WiKi

(Различия между версиями)
Перейти к: навигация, поиск
Admin (Обсуждение | вклад)
(Новая: Временами возникает проблема непонятных изменений в БД биллинга. Очень хорошее средство для локализ...)

Текущая версия на 08:29, 8 октября 2009

Временами возникает проблема непонятных изменений в БД биллинга. Очень хорошее средство для локализации и отладки проблемы - установить на изменяющуюся таблицу триггер, который будет логировать в отдельную таблицу время изменения. Установка точного времени изменения очень облегчает задачу поиска причины изменения. Для примера, триггер, отслеживающий вставку данных в таблицу статусов подписки модуля CerberCrypt и логирующий изменения в отдельную таблицу events_log_18_insert.

CREATE TABLE `events_log_18_insert` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`create_date` DATETIME NOT NULL ,
`cpid` INT NOT NULL ,
`status` SMALLINT NOT NULL 
);
 
DELIMITER |
CREATE TRIGGER `event_logger` AFTER INSERT ON `event_log_18`
FOR EACH ROW BEGIN
INSERT INTO events_log_18_insert (create_date, cpid, STATUS) VALUES (now(), new.cpid, new.type);
END;
|
DELIMITER;
Личные инструменты