CREATE TRIGGER in MySQL

Печать RSS
210

Автор
Пацак
0
Доброго времени суток, уважаемые Мастера.
У меня возникла запара при создании триггеров. Версия mysql 5.0.7 по идее такие вещи как DELIMITER, BEGIN and END должны уже поддерживатся в полной мере но, увы...
Вот такой вот вариант проходит без чихов и диареи
CREATE DEFINER = CURRENT_USER 
TRIGGER `ac_blog_udir` 
AFTER DELETE ON `ac_blog_udir`
 FOR EACH ROW DELETE FROM `ac_blog_stat` WHERE `id_user` = OLD.`id_user` AND `id` = OLD.`id`;
но он не верен так как сначало стоит проверить существуют ли записи в указанной таблице.
Надо бы записать так
DELIMITER !!
CREATE DEFINER = CURRENT_USER
 TRIGGER `ac_blog_udir` 
AFTER DELETE ON `ac_blog_udir` 
FOR EACH ROW BEGIN
 IF (SELECT COUNT(*) FROM `ac_blog_udir` WHERE `id_user` = OLD.`id_user` AND `id` = OLD.`id` LIMIT 1) = 1
 THEN 
DELETE FROM `ac_blog_stat` WHERE `id_user` = OLD.`id_user` AND `id` = OLD.`id`;
END IF;
END;
!!
DELIMITER;
но, не пруха, выдает ошибку т гаснет. С чем это может быть связано? За ранее спасибо)
PS.
Умники с ссылками на гугл - лесом, был бы у меня траф на него, давно бы уже воспользовалась. Примеры с мануалов тоже не катят...
Изменил: Erika (06.05.2013 / 15:26)
Автор
Пацак
0
Никто не в курсе?

Чатланин
0
мб ошибку приведёшь? самое главное и не указала
Автор
Пацак
0
3. shilo, текст ошибки:
У вас есть ошибка в вашем синтаксисе sql; Проверьте руководство, которое соответствует вашей версии сервера mysql для правильного синтаксиса, что-бы использовать рядом
'WHERE id = OLD.id AND id_user = OLD.id_user' на линии 4.
-----
Я то нашла выход (ON DELETE CASCADE) но, все же...
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск