【发布时间】:2010-09-21 17:34:08
【问题描述】:
我在 PHP5.3 中执行以下操作:
$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 可以在没有它们的情况下正确解析触发块。
-
感谢您的回答,Brian :-) 工作就像一个魅力!