В этой статье мы расскажем, как создать триггер в MySQL. Триггер в MySQL, это процедурный код, который автоматически выполняется как ответ на определенные события в конкретной таблицы или представления в базе данных. Мы берем реальный пример здесь, если новая запись (New Employee Joining), вставлена в таблицу сотрудников, то она должна быть также вставлена в таблицу заработной платы.
Есть три типа триггеров поддерживаемые в Mysql версии 5.0.2. Они написаны ниже:
Здесь приведен пример синтаксиса записи триггера для вставки в Mysql.
CREATE TRIGGER salary_trigger BEFORE UPDATE ON employee_table REFERENCING NEW ROW AS n, OLD ROW AS o FOR EACH ROW IF n.salary <> o.salary THEN END IF;
Пример триггера для вставки в MySQL.
-- удалить существующий триггер с именем Andreyextrigger DROP TRIGGER IF EXISTS `Andreyextrigger`; DELIMITER $$ CREATE TRIGGER `Andreyextrigger` AFTER INSERT ON Table_Current FOR EACH ROW BEGIN UPDATE Table_Record SET `Value` = NEW.`Value` WHERE `Name` = NEW.`Name` AND `Value` < NEW.`Value`; END $$ DELIMITER;
Здесь приведен пример синтаксиса, чтобы написать триггер обновления в Mysql.
ELIMITER // CREATE TRIGGER Andreyextrigger AFTER UPDATE ON contacts FOR EACH ROW BEGIN DECLARE emp_name varchar(50); -- Найти имя сотрудника, осуществить вставку в таблицу SELECT employee() INTO emp_name; -- Вставить запись в таблицу salaries INSERT INTO salaries ( emp_id, updated_date, updated_by) VALUES ( NEW.emp_id, SYSDATE(), emp_name ); END; // DELIMITER ;
Пример синтаксиса триггера для удаления записи в Mysql
DELIMITER // CREATE TRIGGER Andreyextrigger BEFORE DELETE ON epmloyee FOR EACH ROW BEGIN DECLARE emp_name varchar(50); -- Найти имя сотрудника, осуществить удаление в таблице SELECT employee() INTO emp_name; -- Вставка записи в таблицу audit INSERT INTO audit ( emp_id, deleted_date, deleted_by) VALUES ( OLD.contact_id, SYSDATE(), employee ); END; // DELIMITER ;