Синтаксис создания триггера:
Выполнение внешнего скрипта через sys_eval UDF:
CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt
- trigger_name — название триггера;
- trigger_time — Время срабатывания триггера. BEFORE — перед событием. AFTER — после события;
- trigger_event — событие:
- insert — событие возбуждается операторами insert, data load, replace;
- update — событие возбуждается оператором update;
- delete — событие возбуждается операторами delete, replace;
- tbl_name — название таблицы;
- trigger_stmt — выражение, которое выполняется при активации триггера.
Операторы DROP TABLE и TRUNCATE не активируют выполнение триггера.
DELIMITER $$ CREATE TRIGGER tg1 AFTER INSERT ON `your_table` FOR EACH ROW BEGIN \! echo "php algun_script_php.php" >> /log/yourlog.txt END $$ DELIMITER;
- Создаём хранимую процедуру:
DELIMITER $$ CREATE PROCEDURE udfwrapper_sp (p1 DOUBLE, p2 DOUBLE, p3 BIGINT) BEGIN DECLARE cmd CHAR(255); DECLARE result CHAR(255); SET cmd = CONCAT('C:/xampp/php/php.exe -f "C:/xampp/htdocs/phpFile.php" ', p1, ' ', p2, ' ', p3); SET result = sys_eval(cmd); END$$;
- Создаём тригер:
CREATE TRIGGER udfwrapper_trigger AFTER INSERT ON sometable FOR EACH ROW CALL udfwrapper_sp(NEW.Column1, NEW.Column2, NEW.Column3);