Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Триггеры MySQL и PHP, не создаются триггеры 
V
    Опции темы
Zolton007
Дата 7.4.2011, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.6.2007
Где: Воронеж

Репутация: нет
Всего: нет



Возникла проблема:
Через 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 ;"))


PM ICQ Skype   Вверх
baldina
Дата 7.4.2011, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 2
Всего: 101



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


только не забудь 
Код

if (mysqli_more_results ($this->dblink))
  while (mysqli_next_result ($this->dblink));

PM MAIL   Вверх
Zolton007
Дата 7.4.2011, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.6.2007
Где: Воронеж

Репутация: нет
Всего: нет



Цитата(baldina @  7.4.2011,  16:24 Найти цитируемый пост)
только не забудь 
if (mysqli_more_results ($this->dblink))
  while (mysqli_next_result ($this->dblink));


а зачем это?

Это сообщение отредактировал(а) Zolton007 - 7.4.2011, 16:41
PM ICQ Skype   Вверх
baldina
Дата 7.4.2011, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 2
Всего: 101



PM MAIL   Вверх
Zolton007
Дата 7.4.2011, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.6.2007
Где: Воронеж

Репутация: нет
Всего: нет



baldina, ок. Иначе вываливались ошибки. Добавил это после mysqli_multi_query. Выполнение mysqli_multi_query ошибок не дает... но и триггер не создается :(( 
зы блин!

Добавлено через 4 минуты и 56 секунд
baldina, пардон, это был мой косяк )))) на нервах просто забыл исправить названия таблиц. БОЛЬШОЕ СПАСИБО!!  smile 
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.2027 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.