0
我想通過列擴展已經創建的表,但該列是外鍵。這必須發生在1個SQL語句中。 我知道比我可以使用ALTER TABLE操作來實現它,但有一個小的錯誤消息。SQL,通過ALTER TABLE在1語句中添加一個外鍵的列
現有表:
//relation, because table already exists
Relation(A, B, C, D, E, F)
//創建一個表F
CREATE TABLE `MyTable`(
`PK` INT(11) NOT NULL,
`H` VARCHAR(30) NOT NULL,
`I` INT NOT NULL,
PRIMARY KEY(`PK`),
FOREIGN KEY(`I`) REFERENCES `IT`(`I`)
);
嘗試添加這是一個外鍵(在一個聲明中的所有內容)列I:
ALTER TABLE `R`
ADD COLUMN `PK` INT(11) NOT NULL,
ADD CONSTRAINT FOREIGN KEY (`PK`) REFERENCES `MyTable`(`PK`);
錯誤消息:
Cannot add or update a child row: a foreign key constraint fails.
重要信息:我知道如果IT表具有條目,可能會出現問題,但在我們的情況下,表是空的。
有什麼建議嗎?編號: 解決方法:刪除約束「NOT NULL」。 感謝@Milan斯威克
-------------------------------------------
CREATE TABLE `MyTable`(
`PK` INT(11),
`H` VARCHAR(30) NOT NULL,
`I` INT NOT NULL,
PRIMARY KEY(`PK`),
FOREIGN KEY(`I`) REFERENCES `IT`(`I`)
);
ALTER TABLE `R`
ADD COLUMN `PK` INT(11),
ADD CONSTRAINT FOREIGN KEY (`PK`) REFERENCES `MyTable`(`PK`);
--------------------------------------
有時候很容易。首先解決問題。 – normalUser221