假设我有下表:
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/