没有空外键引用可为空的列

时间:2019-02-13 16:01:04

标签: 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

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

1 个答案:

答案 0 :(得分:1)

此错误与一列可为空而另一列不可为无关。 之所以出现此错误,是因为根据您的表结构,列providerID并不是任何键。
因此,您不能将它作为外键添加到另一个表中。

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