如何在 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
表如下所示,
我想将orderbook
中payment_request
表中的id
添加为外键,名称为payment_request_id
在id
列之后(第二个位置)。
运行 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 表中添加外键列?的主要内容,如果未能解决你的问题,请参考以下文章
当主键列是mysql中不同表的外键时,如何将主键列更改为自动递增
如何使用 Sequelize 和 mySql 选择外键列的名称?