mysql - 改变表添加外键引用

标签 mysql sql foreign-keys jointable

我正在做一个学习 perl/catalyst 的教程,它似乎有点过时了。我正在尝试将一个已经存在的列(以前是主键(已经删除主键))更改为外键。我已经尝试了一堆不同的语法配置,但似乎无法确定。这是我最近的尝试:

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

如有任何建议,我们将不胜感激。

最佳答案

您可以像在 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

关于mysql - 改变表添加外键引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38773815/

相关文章:

php - MYSQL 查询中的整理

javascript - 将两个持续时间相加的明智方法是什么? (JS/PHP/SQL)

SQL 删除表并重新创建并保留数据

php - MySQL PHP 插入问题

php - 如果没有删除 DB 行,则返回 false?

php - 我需要帮助更新特定用户的 sql 条目

mysql - 一个表可以有两个外键吗?

sql - "Missing Keyword"在 Oracle SQL Developer 中创建表时

mysql - Laravel 中图像的数据类型

php - MYSQL 与 PHP 中的查询匹配