gpt4 book ai didi

Mysql:使用Select进行多次插入,外键失败

转载 作者:行者123 更新时间:2023-11-29 19:09:55 25 4
gpt4 key购买 nike

我尝试“复制”表 A 中的几行。该表 (A) 只有两个字段,它们是外键。一份引用表 B,另一份引用表 C。

现在我想从 A 中取出几行并将它们重新插入(复制)到 A 中。这样做时我将更改其中一个外键 (FK1)。

INSERT INTO `A` (`FK1`, `FK2`) VALUES (".$newFK.", 1);

这段代码运行没有任何问题。但我需要复制的不仅仅是一行。当然,我可以执行 SELECT 语句并使用 fetch_array 逐行插入每一行,但我想更优雅地解决它。像这样:

INSERT INTO A (`FK1`, `FK2`) SELECT ".$newFK.", `FK2` FROM `A` WHERE `FK1` = '".$tobeduplicatedFK."';

我也尝试过

INSERT INTO `A` SET `FK1` = ".$newFK.", `FK2` = (SELECT `FK2` FROM `A` WHERE `FK1` = '".$tobeduplicatedFK."');

不幸的是,这些都不起作用。但我确实收到了“无法添加或更新子行:外键约束失败” - 与 FK1 相关的错误。由于不优雅的版本正在运行,因此存在新的 FK1 ($newFK)。我也检查了旧的 FK1 ($tobeduplicatedFK),它也存在。

我想可能出了什么问题,因为 select 语句位于同一个表上,并且使用必须在 WHERE 子句中更改的 FK。我尝试执行从 A 作为 Asource 选择的 SELECT 语句,但它也失败了。

知道为什么失败吗?

最佳答案

尝试子查询:

"INSERT INTO A
(
FK1,
FK2
)
SELECT
FK1,
FK2
FROM
(SELECT
{$newFK} AS FK1,
FK2
FROM
A
WHERE
FK1 = {$tobeduplicatedFK}) x0;"

关于Mysql:使用Select进行多次插入,外键失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43170556/

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