2016-08-04 4 views
2

Я занимаюсь учебным пособием по изучению perl/катализатора и, похоже, немного устарел. Я пытаюсь изменить уже существующий столбец, который ранее был основным ключом (уже сброшенным первичным ключом), в внешний ключ. Я пробовал кучу различных конфигураций синтаксиса и, похоже, не мог его закрепить. Это моя последняя попытка:Alter Table add Foreign Key Reference

ALTER TABLE book_author (
    MODIFY book_id INTEGER 
    ADD CONSTRAINT FOREIGN KEY book_id 
    REFERENCES book(id) 
    ON DELETE CASCADE 
    ON UPDATE CASCADE 
); 

Любые советы приветствуются.

ответ

2

Вы используете круглые скобки, которые вы делаете в операторе CREATE TABLE, но не в операторе ALTER TABLE.

Вам также не хватает запятой между линиями MODIFY и ADD CONSTRAINT.

И вам не хватает круглых скобок вокруг столбца book_id, который является предметом ограничения.

следующие работы:

ALTER TABLE book_author 
    MODIFY book_id INTEGER, 
    ADD CONSTRAINT FOREIGN KEY (book_id) 
    REFERENCES book(id) 
    ON DELETE CASCADE 
    ON UPDATE CASCADE; 

Этот синтаксис задокументированы на официальном сайте MySQL: http://dev.mysql.com/doc/refman/5.7/en/alter-table.html