gpt4 book ai didi

mysql - 如何在插入值存在的地方替换主键?

转载 作者:行者123 更新时间:2023-11-30 01:06:03 25 4
gpt4 key购买 nike

我创建了一个新的数据库(usuarios),我想将旧值插入到新表中,但我的 SQL 备份还保存了 auto_increment 值,它是主键,因此当我导入文件时,会显示错误消息,它是由于主键值已在新表中使用,例如:

INSERT INTO `usuarios` VALUES
(5, 'USERBETA', 'USERINFO')

它表示主键 5 重复。如何修复此问题以忽略旧的 auto_increment 值并使用新的值?

最佳答案

更新:此查询将更改您的现有数据以使用更大的 ID 号,此时您可以导入旧数据。只要将现有的表数据ID移动到足够大的数量,然后导入旧数据就不会出现歧义。

UPDATE usuarios SET id = (id+10000)

(10000是任意的,它应该比旧数据中最大的现有ID大一些)

然后将您的 ID 号码重新设置为 1:

ALTER TABLE `usuarios` AUTO_INCREMENT = 1;

然后导入您的数据。

原始答案

如果您没有关系表(不依赖于表 usuarios 中已设置的固定 ID),那么您可以直接导入而不使用 id 列。但是,如果您需要保留那些已分配的旧 id,您可以在导入之前关闭 auto_increment,然后在插入所有内容后重新启用。

假设id是你的id列:

删除任何现有(旧)数据:

TRUNCATE TABLE usuarios

删除自动增量

ALTER TABLE usuarios CHANGE `id` INT(11) NOT NULL

像以前一样导入您的数据。

然后,重新添加 auto_increment:

ALTER TABLE usuarios MODIFY `id` INTEGER NOT NULL AUTO_INCREMENT;
ALTER TABLE `usuarios` AUTO_INCREMENT = 1234;

关于mysql - 如何在插入值存在的地方替换主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19730944/

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