1. Головна
  2. Колонка автора
  3. Тригери для моніторингу бази даних

Тригери для моніторингу бази даних

Рано чи пізно, всі доходять до теми тригерів в MySql. Що ж це таке і для чого потрібні, коротко розберемося у цій темі.

Що таке тригер бази даних

Тригер (trigger) — це окрема збережена процедура, яка виконується після настання певних подій у реляційній базі даних без участі користувача. До подій відносяться операції додаванням INSERT, вилученням рядка в таблиці DELETE та зміна даних у певному стовпці UPDATE.

Моніторинг змін бази даних

Уявімо ситуацію, що у вас вже більш-менш великий вебсайт, на якому є декілька адміністраторів, які розміщують матеріал з можливістю редагування записів. І ось, хтось з них, через деякі причини, вирішив вам якось нашкодити, або ж розміщувати рекламні посилання тощо. Для того, щоб це вчасно побачити, потрібно стежити за звітами подій (логи). І найпростішим варіантом буде використання тригерів, які спрацьовуватимуть при додаванні або редагуванні записів.

Створимо найпростіший варіант, який ви, вивчивши логіку роботи, зможете впровадити для вашого проєкту.

Створення таблиці логів

Для того, щоб нам моніторити події, їх потрібно записати. Створимо таблицю «logs»:
CREATE TABLE `logs` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`msg` VARCHAR(255) NOT NULL,
`row_id` INT(11) NOT NULL)

Створення тригера

Створимо тригери для операцій Insert, Update та Delete:
CREATE TRIGGER `insert` AFTER INSERT ON `table`
FOR EACH ROW BEGIN
INSERT INTO `logs` SET `msg` = 'insert', `row_id` = NEW.id;
END

CREATE TRIGGER `update` before UPDATE ON `table`
FOR EACH ROW BEGIN
INSERT INTO `logs` SET `msg` = 'update', row_id = OLD.id;
END

CREATE TRIGGER `delete` before DELETE ON `table`
FOR EACH ROW BEGIN
INSERT INTO `logs` SET `msg` = 'delete', row_id = OLD.id;
END
Як можна здогадатися, при створенні нових записів, редагуванні або видаленні записів з таблиці «table» буде спрацьовувати тригер, який запише у таблицю «logs» назву операції у стовпець «msg», та ID запису, який був аналогічно створений, редагований чи видалений.
Тригери для моніторингу бази даних

Удосконалення тригера

У нашому випадку ми створили лише простий приклад використання тригера, однак його можна суттєво удосконалити. Наприклад, можна записати у таблицю логів будь-які старі значення таблиці, за якою відбувається стеження за допомогою тригера. Для цього необхідно використовувати OLD.{назва поля}.
Редакція «КовельPost» може не поділяти думку блогерів або дописувачів. За зміст публікацій і їх достовірність відповідальність несуть автори.

Коментарі

Підписуйтесь на наш канал у Telegram! 🚀

@kovelpost