如何在 MySQL 表中添加外键列?

Posted

技术标签:

【中文标题】如何在 MySQL 表中添加外键列?【英文标题】:How to add a foreign key column in the MySQL table? 【发布时间】:2018-07-19 19:21:39 【问题描述】:

我在 mysql 中有一个名为 payment_request 的表,

DESCRIBE payment_request 提供以下输出,

oderbook 表如下所示,

我想将orderbookpayment_request 表中的id 添加为外键,名称为payment_request_idid 列之后(第二个位置)。

运行 MySQL 的 SQL 是什么?

【问题讨论】:

Add Foreign Key to existing table的可能重复 让我们保持提及,我们需要匹配变量类型来声明外键。 【参考方案1】:

首先您需要在表orderbook中添加新列

ALTER TABLE orderbook
ADD payment_request_id INT(10) unsigned AFTER ID;

然后添加一个将定义外键的约束

ALTER TABLE orderbook
ADD CONSTRAINT fk_orderbook FOREIGN KEY (payment_request_id) 
REFERENCES payment_request (id);

参考:

MySQL Alter Table

【讨论】:

最后3个添加外键的命令没有执行,我得到错误:Error Code: 1215. Cannot add foreign key constraint @Arefe,因为数据类型不匹配。查看我的更新答案。【参考方案2】:

您可以在创建表时执行此操作:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
); 

或通过改变表格:

ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID); 

另请参阅this tutorial。

【讨论】:

非常感谢您的回答

以上是关于如何在 MySQL 表中添加外键列?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 sql server 中设置外键列的默认值?

当主键列是mysql中不同表的外键时,如何将主键列更改为自动递增

MYSQL外键约束

如何使用 Sequelize 和 mySql 选择外键列的名称?

使用 Django,如何添加引用同一个表的外键列? [复制]

如何使用普通 JDBC 获取目标表的名称和外键列的列