Может кто-нибудь сказать мне, что не так с моим синтаксисом триггера создания?

0

Я экспериментирую с триггерами в первый раз.

Когда я пытаюсь создать триггер, используя следующее:

CREATE TRIGGER t_foldersPrivate BEFORE DELETE ON foldersPrivate
FOR EACH ROW BEGIN
 DELETE FROM programs WHERE folderType = '0' AND folderID = OLD.ID; 
END;

Я получаю следующую ошибку:

`1064 - 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 '' at line 3`

(mysql 5.1.37)

Если я избавлюсь от инструкции delete, инструкция create trigger работает нормально. Поэтому я предполагаю, что это должно иметь какое-то отношение к этому. Но для жизни меня я не уверен, что...

Теги:
triggers

1 ответ

1

Вы должны изменить разделители.

Что-то вроде этого:

DELIMITER $$

CREATE TRIGGER t_foldersPrivate BEFORE DELETE ON foldersPrivate
FOR EACH ROW BEGIN
 DELETE FROM programs WHERE folderType = '0' AND folderID = OLD.ID; 
END$$

DELIMITER ;

Кроме того, вы должны проверить запрос удаления отдельно. Он работает?

  • 0
    Да, оператор удаления отлично работает отдельно. Я попытался использовать приведенный выше код, однако он приводит к сбою phpMyAdmin. Все это схватило, пока я не перезапустил MySQL ...
  • 0
    Я считаю, что неправильно вызывать «OLD.ID» в событии «до». Спасибо за это. Попробуйте сделать это: УДАЛИТЬ ИЗ ПРОГРАММ, ГДЕ folderType = '0' И folderID = ID;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню