gpt4 book ai didi

mysql - 没有 auto_increment 的唯一 ID

转载 作者:行者123 更新时间:2023-11-29 06:34:19 27 4
gpt4 key购买 nike

我有一个带有非自动递增主键的现有模式。该键在十几个其他表中用作外键。

我继承了一个存在重大性能问题的程序。目前,当一个新行被添加到这个表时,这是一个新的唯一 ID 是如何创建的:

1) a query for all existing primary key values is retrieved
2) a random number is generated
3) if the number does not exist in the retrieved values, use it, otherwise goto (2)

该应用程序是多线程和多服务器的,因此在启动时简单地获取现有 ID 不是一种选择。我没有来自发起请求的唯一信息来获取并转换为伪唯一值(如成员(member) ID)。

我知道理论上可以对内部结构进行手术以向现有主键添加自动增量。我知道也可以系统地删除指向该表的所有外键,然后创建-重命名-插入该表的新版本,然后添加回外键,但是这种表格式是由第三方应用程序决定的,如果我把事情搞砸了,那么坏事就会发生。

有没有办法利用 sql/mysql 来提供唯一的行值?

我想到的最接近的方法是从一个大空间中随机选择一个数字,并希望它在数据库中是唯一的,然后在发生奇怪的冲突时重试。

想法?

最佳答案

如果表有一个主键未被用于外键引用,则删除该主键。目标是使您的列成为自动递增的主键。

所以,寻找最大值,然后下面的代码应该做你想做的:

alter table t modify id int not null auto_increment primary key;
alter table t auto_increment = <maximum value> + 1;

我认为没有必要显式设置 auto_increment 值,但我想确定一下。

关于mysql - 没有 auto_increment 的唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25902626/

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