2012-02-04 6 views
0

Я хотел бы изменить таблицу ребенка, предлагая ему внешний ключ, который ссылается на родителя по его идентификатору, как этотMySQL заявление, чтобы изменить таблицу не работает

CREATE TABLE PARENT (parentID int not null auto_increment primary key,...); 
CREATE TABLE CHILD (childID int not null auto_increment primary key, parentID int not null,...); 

Теперь утверждение зафиксировать созданную таблицу is

ALTER TABLE child CHANGE parentID parentID int not null foreign key references parent(childID) ON DELETE CASCADE; 

Это не работает. Любая помощь приветствуется. Благодарю.

+0

Какая ошибка вы получаете ?? –

+0

синтаксическая ошибка рядом с «внешним ключом», я проверил ее в MySQL Workbench. – fuzzyanalysis

+0

можете ли вы отправить полную строку ошибки? –

ответ

0

Обратите внимание на MSDN Library относительно T-SQL-синтаксиса для ALTER. Вы, вероятно, хотите что-то вроде:

ALTER TABLE Child ALTER COLUMN... 
+0

Наверное, не слишком полезно для написания команд mysql DDL. – araqnid

0

Последней строки имеет неправильную ссылку имени столбца для внешнего ключа, должно ссылаться на ParentID вместо childID. У вас также есть некоторые синтаксические ошибки.

Попробуйте вместо этого:

ALTER TABLE child CHANGE parentID parentID int not null, 
add foreign key (parentID) references parent(parentID) ON DELETE CASCADE; 
1

Просто сказать:

ALTER TABLE `CHILD` 
    ADD FOREIGN KEY (parentId) REFERENCES `PARENT`(parentId) ON DELETE CASCADE; 

Там нет необходимости (AFAIK), чтобы изменить тип столбца, как это уже правильно.

Смежные вопросы