Створення тригерів в mysql

Тригери - це збережені процедури. які виконуються при настанні певної події. Під подією розуміється відправка певного запиту. Наприклад, при додаванні запису в таблицю тригер може бути викликаний і буде виконаний певний код.
Щоб перевірити, як працюють тригери, давайте створимо з Вами 2 таблиці. Перша таблиця - це країни (countries):
- id - унікальний ідентифікатор.
- title - назва країни.
Таблиця з містами (cities):
- id - унікальний ідентифікатор.
- title - назва міста.
- country_id - id тієї країни, якій належить дане місто.
Тепер давайте зробимо так, що якщо раптом видаляється запис з таблиці з країнами, то все міста, що належать цій країні, видаляються з таблиці з містами.
Такий тригер створюється в MySQL наступним чином:
DELIMITER //
CREATE TRIGGER `delete_cities` BEFORE DELETE ON` countries`
FOR EACH ROW BEGIN
DELETE FROM `cities` WHERE` country_id` = OLD.`id`;
END
Після створення тригера при видаленні країни автоматично відійдуть з іншої таблиці все міста, що належать цій країні. Тепер розберемо докладніше синтаксис створення тригера:
- DELIMITER - роздільник, який необхідно вказати, інакше на ";" буде видаватися помилка.
- `Delete_cities` - це просто ім'я тригера.
- BEFORE DELETE - дана команда означає, що тригер буде спрацьовувати безпосередньо перед видаленням запису. Замість BEFORE може бути AFTER. а замість DELETE інша подія, наприклад, INSERT або UPDATE.
- `Countries` - назва таблиці, на яку встановлюється тригер.
- FOR EACH ROW - початок команди, що виконується при спрацьовуванні тригера.
- BEGIN і END - окремий блок виконуваної команди.
- OLD.`id` - звернення до полю `id` видаляється записи з таблиці` countries `.
Відразу скажу, що тут я показав простий приклад. У реальності, код після FOR EACH ROW може бути не 2 рядки, а дуже і дуже великим. Там так само можна писати цикли, умови, різні порівняння і багато-багато іншого.
Ось таким чином створюються тригери в MySQL.