首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MySQL的脚本或PHP重新生成MySQL表中的ID行

使用MySQL的脚本或PHP重新生成MySQL表中的ID行
EN

Stack Overflow用户
提问于 2010-04-17 00:39:04
回答 3查看 1.1K关注 0票数 1

我有一个数据库谁使用我的网页用户的信息填充。与许多MySql表一样,该表具有自动递增的ID参数。问题是,当有人从网站上删除他的帐户时,在数据库中仍然是我不想要的序列中的一个跳跃,因为我有一个脚本,如果在ID中发现一些跳跃,就会失败。

例如。

代码语言:javascript
复制
ID   Name  PASS
1    Jhon  1234
2    Max   2233
3    Jorge 2232

如果Max退出,而一个新用户进入,这就是将发生的事情。

代码语言:javascript
复制
ID   Name  PASS
1    Jhon  1234
4    NewU  1133
3    Jorge 2232

那么,为了避免这种错误,从数据库中擦除某些主体的最好方法是什么?或者,如果不是这样的话,可以使用PHP或MySql脚本来消除ID行中的所有内容,并按顺序重新生成它?非常感谢!对不起,我的英语

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-17 00:41:36

我认为不是AUTOINCREMENT的问题,而是你的脚本的问题。

几乎从不你想在数据库中重构自动递增的数字吗。这就违背了目的。

我宁愿推荐你在修复你的脚本上的工作。

这是各种错误的,但是来自Reset a auto increment field?

由于自动增量字段通常用作链接到其他表的键,因此不经常对现有记录进行重新编号。如果您真的想对它们全部重新编号,请将这些记录复制到新的表中,但不使用自动增量字段。截断原始表并复制回原始记录,为自动增量字段提供NULL。

使用这种方法,您还必须手动更新所有外键、指向这些新ID的链接和,与修复脚本相比,这似乎是一项非常繁重的任务

票数 3
EN

Stack Overflow用户

发布于 2010-04-17 00:41:19

不建议您尝试保持主键顺序。最好重写您的脚本,使其不具有此依赖项。更改数据上的主键对于数据完整性和性能都不是一个好主意。

票数 1
EN

Stack Overflow用户

发布于 2011-05-10 14:16:17

不建议在表中重新排列主键。如上所示,该表就是users表。它可以通过外键与另一个表关联。可能在另一个表中引用了用户表的主键。如果您重新安排表中的主键,您还必须管理所有相关的表。因此,请尝试修复脚本中的bug。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2654660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档