gpt4 book ai didi

mysql - SQL,通过 ALTER TABLE in 1 Statement 添加作为外键的列

转载 作者:行者123 更新时间:2023-11-29 18:54:12 25 4
gpt4 key购买 nike

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

现有表:

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

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

最佳答案

不确定,但首先尝试使该列可为空。在用实际值填充后,稍后将其更改为不可为空。

关于mysql - SQL,通过 ALTER TABLE in 1 Statement 添加作为外键的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44225872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com