我在执行PHP5.3如下:通过PHP创建mysql触发器?
$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);
不获取创建 “photo_fulltext_update” 触发。该语句在phpMyAdmin中运行(并创建所有触发器)。我在网上读过一些地方,MySQL服务器根本不支持DELIMITER语句,所以我正在寻找一种方法来重新编写这个多步骤的CREATE TRIGGER语句,以便mysqli :: multi_query可以将它发送给MySQL 。
谢谢!
解决方案是简单地删除“DELIMITER”语句和尾部“|”。我想MySQL和/或mysqli没有它们正确解析触发器块。 – brianjcohen 2010-09-21 18:44:16
感谢您的回答,布赖恩:-)工作就像一个魅力! – 2013-10-31 13:24:43