Sto eseguendo il seguente in PHP5.3:Crea un trigger mysql tramite 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);
Il trigger "photo_fulltext_update" non è sempre creato. Questa istruzione viene eseguita (e crea tutti i trigger) in phpMyAdmin. Ho letto online da qualche parte che il server MySQL non supporta affatto l'istruzione DELIMITER, quindi sto cercando un modo per riscrivere questa istruzione CREATE TRIGGER in più fasi in modo che mysqli :: multi_query possa inviarlo a MySQL .
Grazie!
La soluzione è semplicemente rimuovere le istruzioni "DELIMITER" e il finale "|". Immagino che MySQL e/o mysqli analizzino correttamente il blocco trigger senza di loro. – brianjcohen
Grazie per la risposta, Brian :-) Funziona come un fascino! –