| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > Триггеры MySQL и PHP |
| Автор: Zolton007 7.4.2011, 15:10 |
| Возникла проблема: Через EMS MySQL Manager триггер замечательно создается и работает, НО: - при создании через phpMyAdmin пишет, что sql-запос выполнен, а триггер не создается (я читал, что phpMyAdmin глючит в части триггеров :(); - (самое плохое) триггер не создатся из php-сценария. Сначала пытался создавать серез mysql_query, но понял, что это косяк, т.к. создание триггера - это мульти-запрос и переписал всю свою библиотеку под mysqli и это не помогло :( использование ф-ции mysqli_multi_query точно так же дает ошибку "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'тра-та-та в первой строке (в не прямой зависимости от того что в первой строке написано=))'". Для понятности даю ксочек кода создания самого простого не создающегося тригггера (назваия изменены): mysqli_multi_query($this->dblink, " DELIMITER | DROP TRIGGER IF EXISTS `OFFICIAL_PHONES_AND_EMAILS_DELETER` | CREATE TRIGGER `OFFICIAL_PHONES_AND_EMAILS_DELETER` AFTER DELETE ON `T011_OFFICIALS` FOR EACH ROW BEGIN DELETE FROM `T012_OFFICIAL_PHONES` WHERE `UID_OFFICIAL` = OLD.UID_OFFICIAL; DELETE FROM `T013_OFFICIAL_EMAILS` WHERE `UID_OFFICIAL` = OLD.UID_OFFICIAL; END;| DELIMITER ;")) |
| Автор: baldina 7.4.2011, 16:24 | ||||
DELIMITER убрать надо, оставить точку с запятой
только не забудь
|
| Автор: Zolton007 7.4.2011, 16:41 | ||
а зачем это? |
| Автор: baldina 7.4.2011, 16:45 |
| http://www.php.net/manual/en/mysqli.multi-query.php#65810 |
| Автор: Zolton007 7.4.2011, 16:50 |
| baldina, ок. Иначе вываливались ошибки. Добавил это после mysqli_multi_query. Выполнение mysqli_multi_query ошибок не дает... но и триггер не создается :(( зы блин! Добавлено через 4 минуты и 56 секунд baldina, пардон, это был мой косяк )))) на нервах просто забыл исправить названия таблиц. БОЛЬШОЕ СПАСИБО!! |