estoy ejecutando el siguiente en PHP5.3:Crear el disparador de mysql a través de 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);
El disparador "photo_fulltext_update" no está siendo creado. Esta instrucción se ejecuta (y crea todos los desencadenadores) en phpMyAdmin. He leído en línea en alguna parte que el servidor MySQL no soporta la sentencia DELIMITER en absoluto, así que estoy buscando una manera de volver a escribir este multi-paso instrucción CREATE TRIGGER para que mysqli :: consulta múltiple puede enviarlo a MySQL .
Gracias!
La solución es simplemente eliminar las declaraciones "los delimitadores" y la posterior "|". Supongo que MySQL y/o MySQL analizan correctamente el bloque disparador sin ellos. – brianjcohen
Gracias por la respuesta, Brian :-) funciona como un encanto! –