Шукати в цьому блозі

пʼятниця, 18 листопада 2011 р.

MySQL: тригеры и вызов внешних приложений

Синтаксис создания триггера:
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;
Выполнение внешнего скрипта через sys_eval UDF:
  1. Создаём хранимую процедуру:
    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$$;
  2. Создаём тригер:
    CREATE TRIGGER udfwrapper_trigger AFTER INSERT ON sometable
    FOR EACH ROW
    CALL udfwrapper_sp(NEW.Column1, NEW.Column2, NEW.Column3);


Немає коментарів: