2017-05-28 108 views
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`); 

-------------------------------------- 

回答

0

不知道,但嘗試使列可空第一。在填充實際值後,將其更改爲不可空。

+0

有時候很容易。首先解決問題。 – normalUser221

相關問題