说我有以下表格:
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
我对该错误的最佳猜测是,因为一列可以为空,而另一列则不能为空。如果是这种情况,如何在引用表中将可为空的列设置为另一个表中的非空外键?
答案 0 :(得分:1)
此错误与一列可为空而另一列不可为无关。
之所以出现此错误,是因为根据您的表结构,列providerID
并不是任何键。
因此,您不能将它作为外键添加到另一个表中。
要解决此问题,您要么必须使其成为键的一部分,要么重新考虑它实际上是否应作为键的一部分,或者是否应该一起删除外键约束。