java - 如何在 MySQL 数据库中重新分配唯一的整数 ID?
问题描述
考虑一下:
- 我有一个有 10 行的数据库。
- 每行都有一个唯一的 id (int) 与一些值配对,例如 name (varchar)。
- 这些 id 从 1 递增到 10。
- 我删除了 2 条记录 - 2 条和 8 条。
- 我再添加 2 条记录 11 和 12。
问题:
- 有没有一种好方法可以重新分配此数据库中的唯一 ID,使其再次从 1 变为 10?
- 这会被认为是不好的做法吗?
我问了这个问题,因为在使用了这个数据库之后:添加和删除值,id 会显着不同。
解决方案
解决此问题的一种方法是仅在实际查询时生成所需的行号,如下所示:
SET @rn = 0;
SELECT
(@rn:=@rn + 1) AS rn, name
FROM yourTable;
ORDER BY id;
一般来说,您不应该担心 MySQL 分配的自动增量值。MySQL 将确保值是唯一的,无需您的干预。
推荐阅读
- javascript - 具有多个默认值的 Javascript Switch 语句
- matrix - octave 使用向量作为矩阵的列索引
- javascript - 如何为参考 SVG 背景设置动画
- python - 有没有办法在 Kivy 中制作自定义 TextInput?
- java - 如何使用厨师以编程方式更新 JAVA_HOME - JRE
- google-cloud-platform - 连接断开时,Google Cloud Platform 无法运行长时间运行的进程
- javascript - Async/Await 不等待响应,返回 Promise 对象
- osgi - 无法部署包含 ComponentFactory OSGi 声明性服务的 Karaf kar 文件
- react-native - 使用 StackNavigator 将用户输入从第二个屏幕传递到第一个屏幕。
- azure-functions - Azure 函数缩放