SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.10.2011 10:42:51

TOTOIIIUr
Участник
Зарегистрирован: 13.10.2011
Сообщений: 2

какая-то синтаксическая ошибка 1064

Здравствуйте.
Полный новичёк как в БД, так и в MySQL.
Система: Ubuntu 11, MySQL Client Version 5.1.54
Создал базу с помощью MySQL Administrator 1.2.12

Есть таблицы nedv(id, mest, name) и mest(id, parent, name). В nedv есть поле mest. Тоесть таблицы должны быть связаны через него. Пытаюсь создать внешний ключ.
Вот вывод консоли:

mysql> ALTER TABLE nedv
    -> ADD FOREIGN KEY (mest)
    -> REFERENCES mest(id)
    -> ON DELETE CASCADE SET NULL;

ERROR 1064 (42000): 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 'SET NULL' at line 4

Подобная ошибка у меня вылезает и тогда когда пытаюсь создать триггер
mysql> CREATE TRIGGER before_delete_mest BEFORE DELETE ON mest
    -> FOR EACH ROW
    -> BEGIN
    -> UPDATE nedv SET mest=NULL WHERE mest=OLD.id
    -> END;

ERROR 1064 (42000): 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 'END' at line 5

Такое чувство, что я не знаю чего-то элементарного и никак не могу понять чего.
Помогите разобраться, пожалуйста.

Отредактированно TOTOIIIUr (14.10.2011 11:30:31)

Неактивен

 

#2 14.10.2011 13:41:26

TOTOIIIUr
Участник
Зарегистрирован: 13.10.2011
Сообщений: 2

Re: какая-то синтаксическая ошибка 1064

Оказывается мои таблицы были типа MyISAM, который не поодерживает внешнии ключи. Сейчас пробую переделать.

Неактивен

 

#3 14.10.2011 13:42:42

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: какая-то синтаксическая ошибка 1064

TOTOIIIUr написал:

Подобная ошибка у меня вылезает и тогда когда пытаюсь создать триггер

mysql> CREATE TRIGGER before_delete_mest BEFORE DELETE ON mest
    -> FOR EACH ROW
    -> BEGIN
    -> UPDATE nedv SET mest=NULL WHERE mest=OLD.id
    -> END;

ERROR 1064 (42000): 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 'END' at line 5

mysql> delimiter $$
mysql> CREATE TRIGGER before_delete_mest BEFORE DELETE ON mest
    -> FOR EACH ROW
    -> BEGIN
    -> UPDATE nedv SET mest=NULL WHERE mest=OLD.id;
    -> END$$
mysql> delimiter ;

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson