我正在尝试向名为OrdersTbl的现有表添加外键。我添加了一个名为ApprovedBy的新列,如下所示:
ALTER TABLE OrdersTbl ADD ApprovedBy BIGINT UNSIGNED NOT NULL;
之后,我尝试将其设置为外键:
ALTER TABLE OrdersTbl
ADD CONSTRAINT ApprovedByEmp FOREIGN KEY (ApprovedBy)
REFERENCES EmployeesTbl(EmployeeID);
但我不断
错误1452:无法添加或更新子行
我究竟做错了什么?我应该将字段
ApprovedBy
设置为FOREIGN KEY吗? 最佳答案
定义时
ALTER TABLE OrdersTbl ADD ApprovedBy BIGINT UNSIGNED NOT NULL;
那么
ApprovedBy
不能为null
。默认值将设置为0
。然后,将外键应用于
EmployeesTbl
。这意味着数据库检查ApprovedBy
仅包含EmployeesTbl
中的值。但事实并非如此。值为0
。因此,要么允许
null
用作ApprovedBy
,然后在以后相应地设置值,要么在添加外键之前设置正确的值。