
В этой статье мы расскажем, как создать триггер в MySQL. Триггер в MySQL, это процедурный код, который автоматически выполняется как ответ на определенные события в конкретной таблицы или представления в базе данных. Мы берем реальный пример здесь, если новая запись (New Employee Joining), вставлена в таблицу сотрудников, то она должна быть также вставлена в таблицу заработной платы.
Есть три типа триггеров поддерживаемые в Mysql версии 5.0.2. Они написаны ниже:
Триггер для вставки в Mysql
Здесь приведен пример синтаксиса записи триггера для вставки в 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
Здесь приведен пример синтаксиса, чтобы написать триггер обновления в 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
Пример синтаксиса триггера для удаления записи в 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 ;
Редактор: AndreyEx
Поделиться в соц. сетях:
КРУТА
Но я ничего не понял