2016-08-04 161 views
2

我正在做一个学习Perl /催化剂的教程,它似乎有点过时了。我试图将之前已经存在的一列(它已经是主键)(已经放弃了主键)改变为一个外键。我已经尝试了一些不同的语法配置,似乎无法把它固定下来。这是我最近的尝试:改变表添加外键参考

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语句中。

您还缺少修改和添加约束线之间的逗号。

而且您正在围绕作为约束主题的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