我有一个数据库谁使用我的网页用户的信息填充。与许多MySql表一样,该表具有自动递增的ID参数。问题是,当有人从网站上删除他的帐户时,在数据库中仍然是我不想要的序列中的一个跳跃,因为我有一个脚本,如果在ID中发现一些跳跃,就会失败。
例如。
ID Name PASS
1 Jhon 1234
2 Max 2233
3 Jorge 2232如果Max退出,而一个新用户进入,这就是将发生的事情。
ID Name PASS
1 Jhon 1234
4 NewU 1133
3 Jorge 2232那么,为了避免这种错误,从数据库中擦除某些主体的最好方法是什么?或者,如果不是这样的话,可以使用PHP或MySql脚本来消除ID行中的所有内容,并按顺序重新生成它?非常感谢!对不起,我的英语
发布于 2010-04-17 00:41:36
我认为不是AUTOINCREMENT的问题,而是你的脚本的问题。
几乎从不你想在数据库中重构自动递增的数字吗。这就违背了目的。
我宁愿推荐你在修复你的脚本上的工作。
这是各种错误的,但是来自Reset a auto increment field?
由于自动增量字段通常用作链接到其他表的键,因此不经常对现有记录进行重新编号。如果您真的想对它们全部重新编号,请将这些记录复制到新的表中,但不使用自动增量字段。截断原始表并复制回原始记录,为自动增量字段提供NULL。
使用这种方法,您还必须手动更新所有外键、指向这些新ID的链接和,与修复脚本相比,这似乎是一项非常繁重的任务
发布于 2010-04-17 00:41:19
不建议您尝试保持主键顺序。最好重写您的脚本,使其不具有此依赖项。更改数据上的主键对于数据完整性和性能都不是一个好主意。
发布于 2011-05-10 14:16:17
不建议在表中重新排列主键。如上所示,该表就是users表。它可以通过外键与另一个表关联。可能在另一个表中引用了用户表的主键。如果您重新安排表中的主键,您还必须管理所有相关的表。因此,请尝试修复脚本中的bug。
https://stackoverflow.com/questions/2654660
复制相似问题