我在執行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