MySQL中删除后的自动增量

MySQL中删除后的自动增量

我有一个MySQL表,其中包含一个主键字段,其中包含AUTO_CREATION。在阅读了其他文章之后,我注意到人们有着相同的问题和不同的答案。一些人建议不要使用这个功能,另一些人说它不能被“修复”。

我有:

table: course
fields: courseID, courseName

例如:表中的记录数:18。如果我删除记录16、17和18-我希望输入的下一条记录的课程ID为16,但是因为最后一次输入的课程ID是18,所以它将是19。

我的SQL知识并不令人惊讶,但是否存在使用查询(或phpMyAdmin接口中的设置)刷新或更新此计数的方法?

此表将与数据库中的其他表相关联。


考虑到所有的建议,我决定忽略这个‘问题’。我将简单地删除和添加记录,同时让自动增量完成它的工作。我想这个数字是什么并不重要,因为它只是作为一个唯一的标识符使用,并且没有一个(如上面提到的)商业意思是。

对于那些我可能与我原来的帖子相混淆的人:我不想用这个领域来知道我有多少记录。我只是想让数据库看起来整洁一点,并且有一点一致性。


陪伴而非守候
浏览 646回答 3
3回答

互换的青春

你想做的事听起来很危险,因为这不是AUTO_INCREMENT.如果您确实希望找到最低未使用的键值,请不要使用AUTO_INCREMENT并手动管理你的钥匙。然而,这并不是一种推荐的做法。退后一步问“为什么需要回收键值?“没有签名INT(或BIGINT)不能提供足够大的密钥空间?你真的会有更多的18,446,744,073,709,551,615应用程序生命周期中唯一的记录?

慕容3067478

ALTER TABLE foo AUTO_INCREMENT=1如果您删除了最近的条目,则应该将其设置为使用下一个最低可用项。与之相同的是,只要已经没有19,删除16-18就会将自动增量重置为使用16。编辑:我错过了关于phpmyadmin的一点。你也可以把它放在那里。转到表格屏幕,并单击“操作”选项卡。有一个AUTOINCREMENT该字段可以手动设置为所需的任何内容。

茅侃侃

数据库中的主自动增量键用于唯一标识给定的行,不应该给出任何商业意思是。因此,保持原样的主键,并添加另一列,例如courseOrder..然后,当您从数据库中删除记录时,您可能希望发送一个额外的UPDATE语句,以减少courseOrder列的所有行courseOrder比您当前正在删除的那个要大。另外,您不应该修改关系数据库中主键的值,因为可能会有其他表将其引用为外键,而修改它可能会违反引用约束。
打开App,查看更多内容
随时随地看视频慕课网APP