J'exécution ce qui suit dans PHP5.3:Créer un trigger mysql via PHP?
$sql = "
CREATE TRIGGER `_photo_fulltext_insert` AFTER INSERT ON `photo` FOR EACH ROW INSERT INTO `_photo_fulltext` SELECT * FROM `photo` WHERE `id`=NEW.`id`;
CREATE TRIGGER `_photo_fulltext_delete` AFTER DELETE ON `photo` FOR EACH ROW DELETE FROM `_photo_fulltext` WHERE `id`=OLD.`id`;
DELIMITER |
CREATE TRIGGER `_photo_fulltext_update` AFTER UPDATE ON `photo`
FOR EACH ROW BEGIN
DELETE FROM `_photo_fulltext` WHERE `id`=NEW.`id`;
INSERT INTO `_photo_fulltext` SELECT * FROM `photo` WHERE `id`=NEW.`id`;
END;
|
DELIMITER ;
";
$mysqli->multi_query($sql);
Le déclencheur "de photo_fulltext_update" ne reçoit pas créé. Cette instruction s'exécute (et crée tous les triggers) dans phpMyAdmin. J'ai lu quelque part en ligne que le serveur MySQL ne supporte pas du tout l'instruction DELIMITER, donc je cherche un moyen de réécrire cette instruction CREATE TRIGGER en plusieurs étapes afin que mysqli :: multi_query puisse l'envoyer à MySQL .
Merci!
La solution consiste simplement à supprimer les instructions "DELIMITER" et le "|" final. Je suppose que MySQL et/ou mysqli analysent le bloc de déclenchement correctement sans eux. – brianjcohen
Merci pour la réponse, Brian :-) Fonctionne comme un charme! –