gpt4 book ai didi

MySQL INSERT ...在重复键更新和忽略时

转载 作者:行者123 更新时间:2023-11-30 21:46:45 24 4
gpt4 key购买 nike

我正在向 MySQL 输入大量数据,这些数据经常更新(基于唯一索引)。

给出以下语句...

INSERT INTO 'players' ('id', 'parent', 'child_name')
VALUES
('1', '100', 'john'),
('2', '200', 'bob'),
('3', '300', 'chris')
ON DUPLICATE KEY UPDATE `parent` = VALUES(`parent`), `child_name` =
VALUES(`child_name`), `id` = VALUES(`id`)

在某些情况下,提要不正确且父级不存在,因此失败并出现错误...

无法添加或更新子行:外键约束失败

我想知道的是,它是在这个 bulk upsert 上插入好行还是整个语句失败,如果是这样,我需要添加 ignore 到确保它有效?

提前致谢

最佳答案

带有 innodb 的 MySql(可能是您的引擎)是 ACID。默认情况下,Innodb 上的所有插入语句都是自动完成的,这意味着如果语句的任何部分失败,则不会发生插入。

您可以使用 IGNORE 并且任何失败的值集都将被完全跳过,但是我不推荐这样做,因为它会默默地隐藏任何其他错误(其他您可能不会想到的)。为什么不在插入前验证记录是否满足约束?

同样,您可以更改交易设置并插入交易:https://dev.mysql.com/doc/refman/5.7/en/set-transaction.html .但是,老实说,我从来没有这样做过,所以我不确定如果几行失败会怎样。失败的那个之后剩下的会停止插入吗?

关于MySQL INSERT ...在重复键更新和忽略时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49090132/

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