Створення тригерів в mysql
Тригери - це збережені процедури, які виконуються при настанні певної події. Під подією розуміється відправка певного запиту. Наприклад, при додаванні запису в таблицю тригер може бути викликаний і буде виконаний певний код.
Щоб перевірити, як працюють тригери, давайте створимо з Вами 2 таблиці. Перша таблиця - це країни (countries):
Відео: MySQL Chapter 15 - Trigger Examples
- id - унікальний ідентифікатор.
- title - назва країни.
Таблиця з містами (cities):
Відео: SQL 2012 Update Triggers Lab 2.3
- 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.
Dead trigger 2
Оптимізація планувальника завдань windows 8
Як дізнатися останній id в mysql
Як вибрати неповторювані значення з бази даних.
Як зробити коментування на сайті
Як зробити тестування на сайті
Як дізнатися синтаксис sql-запиту через phpmyadmin
Індекси в mysql
Багаторівневе меню на php і mysql
Sql-запит на вибірку з декількох таблиць
Створення движка на mvc. Робимо можливість редагування і видалення користувачів.
Sql-запити для роботи з таблицями
Group by в sql
Управління записами в phpmyadmin
Різниця між sql і mysql
Mysql
Нормальні форми баз даних.
Оператор between в sql.
Права (привілеї) користувачів в mysql
Структура бази даних
Запит sql на додавання і видалення записів
Як зробити тестування на сайті
Структура бази даних
Створення движка на mvc. Робимо можливість редагування і видалення користувачів.
Права (привілеї) користувачів в mysql
Як зробити коментування на сайті
Індекси в mysql
Mysql
Group by в sql
Dead trigger 2
Sql-запити для роботи з таблицями