MySQL оператор для изменения таблицы не работает - PullRequest
0 голосов
/ 04 февраля 2012

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

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,...);

Теперь оператор для исправления созданной таблицы:

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

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

Ответы [ 3 ]

1 голос
/ 04 февраля 2012

Просто скажите:

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

Нет необходимости (afaik) изменять тип столбца, так как он уже правильный.

0 голосов
/ 04 февраля 2012

Ваша последняя строка содержит неверную ссылку на имя столбца для внешнего ключа, должна указывать parentID, а не childID.Там также есть некоторые синтаксические ошибки.

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

ALTER TABLE child CHANGE parentID parentID int not null, 
add foreign key (parentID) references parent(parentID) ON DELETE CASCADE;
0 голосов
/ 04 февраля 2012

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

ALTER TABLE Child ALTER COLUMN...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...