Un ami et moi avons trouvé comment appeler l'UDF sys_eval de Bernardo Damele, mais la solution n'est pas aussi élégante que je le voudrais. Voici ce que nous avons fait :
- Puisque nous utilisons Windows, nous avons dû compiler la bibliothèque UDF pour Windows en utilisant Instructions de Roland Bouman et les installer sur notre serveur MySQL.
- Nous avons créé une procédure stockée qui appelle sys_eval.
- Nous avons créé un déclencheur qui appelle la procédure stockée.
Code de procédure stockée :
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$$;
Code de déclenchement :
CREATE TRIGGER udfwrapper_trigger AFTER INSERT ON sometable
FOR EACH ROW
CALL udfwrapper_sp(NEW.Column1, NEW.Column2, NEW.Column3);
Je ne suis pas ravi d'avoir une procédure stockée, et je ne sais pas si cela crée des frais supplémentaires, mais cela fonctionne. Chaque fois qu'une ligne est ajoutée à une table, le déclencheur se déclenche.
0 votes
Peut-être que cela vous aidera : stackoverflow.com/questions/40025369/