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

Створення тригерів в 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.