Mysql 自定义自动增量 ID 以修复随机 ID



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

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

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

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

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

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

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

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

最新更新