jestem wykonywanie następujących czynności w PHP5.3:Tworzenie wyzwalacza mysql przez 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);
W "photo_fulltext_update" wyzwalacz nie jest uzyskiwanie tworzony. Instrukcja ta działa (i tworzy wszystkie wyzwalacze) w phpMyAdmin. Czytałem w Internecie gdzieś, że serwer MySQL w ogóle nie obsługuje instrukcji DELIMITER, więc szukam sposobu na ponowne napisanie tej wielostopniowej instrukcji CREATE TRIGGER, aby mysqli :: multi_query mogła wysłać ją do MySQL .
Dzięki!
Rozwiązaniem jest po prostu usunąć „DELIMITER” sprawozdanie oraz tylną „|”. Domyślam się, że MySQL i/lub mysqli poprawnie analizuje blok wyzwalacza bez nich. – brianjcohen
Dzięki za odpowiedź, Brian :-) Działa jak urok! –