mysql - 具有不为空的外键引用可为空的列

标签 mysql foreign-keys

假设我有下表:

User (
  ID INT NOT NULL PRIMARY KEY
  , providerID INT
)

ProviderPlan(
  planID INT NOT NULL PRIMARY KEY
  , providerID INT NOT NULL
)

然后我想创建一个外键来映射两个表:

ALTER TABLE ProviderPlan ADD FOREIGN KEY (providerID) REFERENCES User(providerID) ON DELETE CASCADE;

当我尝试此操作时,出现以下错误:

Error Code: 1215. Cannot add foreign key constraint

我对该错误的最佳猜测是因为一列可以为空,而另一列则不能。如果是这种情况,如何将引用表中的可为空列设置为另一个表中的非空外键?

最佳答案

您收到的此错误与一列可为空而另一列不可为空无关。 您收到此错误是因为根据您的表结构,providerID 列不是任何类型的键。
因此您不能将其作为外键添加到另一个表中。

为了解决这个问题,您要么必须将其作为键的一部分,要么重新考虑它是否实际上应该是键的一部分,或者是否应该一起删除外键约束。

关于mysql - 具有不为空的外键引用可为空的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54674455/

相关文章:

entity-framework - 在 Entity Framework v1 中添加和更新外键

PHP, PDO, MySQL & InnoDB,如何用FK更新/删除记录?

mysql - 如何处理从某个表中删除多个对象

mysql - 在只有一列(主键)的 SQL 表中选择/插入的时间复杂度

mysql - 如何将自动递增的主键也用作外键?

linux - mysqldump错误

database - 将现有列修改为外键

c# - SQLite3 中的外键支持

命令后Mysql不断打印 "->"

php - 使用 JSON 数据作为输入,基于每行的两个约束选择数据