Mysql SQL,通过ALTERTABLE在1语句中添加作为外键的列

Mysql SQL,通过ALTERTABLE在1语句中添加作为外键的列,mysql,sql,database-design,alter,Mysql,Sql,Database Design,Alter,我想通过一列扩展已经创建的表,但该列是外键。这必须在1个SQL语句中发生。 我知道我可以使用ALTERTABLE操作来实现它,但是有一个小错误消息 现有表格: //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, PRI

我想通过一列扩展已经创建的表,但该列是外键。这必须在1个SQL语句中发生。 我知道我可以使用ALTERTABLE操作来实现它,但是有一个小错误消息

现有表格:

//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(一条语句中的所有内容):

错误消息:

Cannot add or update a child row: a foreign key constraint fails.
重要提示:我知道如果IT表有条目可能会出现问题,但在我们的例子中,表是空的

有什么建议吗

编辑: 解决方案:删除约束“非空”。 谢谢@MilanŠvec

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

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`);

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

不确定,但请先尝试使列为空。在用实值填充之后,将其更改为不可为null

有时这很容易。使其可为空首先解决了问题。
-------------------------------------------

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`);

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