说我有以下表格:
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
不是任何类型的键。
因此,您无法将其作为外键添加到另一个表。
要解决这个问题,您必须将其作为密钥的一部分或重新思考,如果它实际上应该是其中一部分或者您应该将外键约束全部放在一起。