0

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

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

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

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

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

1 回答 1

0

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

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

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

于 2013-09-25T19:37:57.447 回答