java - Mysql自定义自增id修复随机id

标签 java mysql jdbc

我加入了一个项目,该项目使用客户端生成的随机数作为 mysql 数据库中的主键字段。这些主键字段是自增的,但并没有这样使用。

我认为这样做是因为开发人员不知道如何在插入后检索数据库生成的id。

现在,我们在许多表中都有一个稀疏的 id 值数组,并且在插入时存在大量的键冲突。

我可以做一些补救工作来允许数据库生成 id(即从最后分配的 id 开始并找到下一个可用 id)并让以下 JDBC 调用正常工作吗?

numero = stmt.executeUpdate(query, Statement.RETURN_GENERATED_KEYS);

最佳答案

我认为,如果您在 Google 中搜索“从 MySQL 序列生成数据库主键”,将会有所帮助。

使用序列:查找给定表中最大的主键,并创建一个从最大主键值开始递增 1 的序列。为每个表创建一个单独的序列。请注意,您让数据库生成 key ,因此您必须禁用程序或客户端生成 key 。

或者,您可以创建一个全新的数据库架构来正确实现主键生成。然后将数据从旧数据库迁移到新数据库,先填充父表,再填充子表。然后,根据旧的主键以编程方式将父记录与子记录进行匹配。但是,我认为对于您的数据库大小而言,这将非常耗时。

关于java - Mysql自定义自增id修复随机id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18994846/

相关文章:

java - Java 源文件末尾的空新行

java - 如何在 Eclipse 中创建我自己的实用程序类?

Java 代码在 Scanner hasNextLine 处挂起

java - FileNotFoundException 打开失败 : ENOENT (No such file or directory) while upload any type of file by Samsung devices

php - MySql 的 ID 值在 while 循环中丢失

mysql - 设置导致连接永不锁定?

java - JDBC SQLite 路径

php - 网站用户上传文件和状态

php - 来自 mysql/JSON 的 twitter bootstrap typeahead 源代码

java - 如何动态地将db值放入jlist中?