ALTER TABLE emp
ADD CONSTRAINT id_fk FOREIGN KEY (deptno) REFERENCES Dept (deptno);
報錯:
Cannot add or update a child row: a foreign key constraint fails ...
emp 表中已存在的 deptno 值,在 Dept 表中找不到對應的主鍵值。
外鍵約束要求:子表(emp)的外鍵欄位每一個非 NULL 值,必須在父表(Dept)的主鍵欄位中存在。
SELECT deptno FROM Dept;SELECT e.deptno FROM emp e LEFT JOIN Dept d ON e.deptno = d.deptno WHERE d.deptno IS NULL;ALTER TABLE 即可成功。INT vs VARCHAR、utf8 vs latin1)。外鍵建立失敗 99% 是因為現有子表資料不符合參考完整性。先清洗資料,再加約束,順序不能反。