MySQL-插入行而不中断自动增量

MySQL-插入行而不中断自动增量,mysql,primary-key,auto-increment,Mysql,Primary Key,Auto Increment,快速问题: 我有一个体育联赛数据库,里面有一个比赛列表(比如说40场左右)。从电子表格导入整个时间表时,每个游戏都会自动分配一个ID号作为主键。由于这个不可见(对用户而言)的主键,游戏将按降序显示在网页上。下面是一个例子: 效果很好。唯一的问题是,有时游戏会被重新安排并移到更晚的日期,或者添加一个新的游戏,并且必须插入到已经存在的时间表中。到目前为止,我不得不手动编辑每个受影响行的ID(使用PhpMyAdmin)来解释更改,这可能非常繁琐和耗时 我真正想做的是设置表以动态地重新调整主键值。也就是

快速问题:

我有一个体育联赛数据库,里面有一个比赛列表(比如说40场左右)。从电子表格导入整个时间表时,每个游戏都会自动分配一个ID号作为主键。由于这个不可见(对用户而言)的主键,游戏将按降序显示在网页上。下面是一个例子:

效果很好。唯一的问题是,有时游戏会被重新安排并移到更晚的日期,或者添加一个新的游戏,并且必须插入到已经存在的时间表中。到目前为止,我不得不手动编辑每个受影响行的ID(使用PhpMyAdmin)来解释更改,这可能非常繁琐和耗时

我真正想做的是设置表以动态地重新调整主键值。也就是说,如果我在表的第五行插入一个全新的游戏,那么之后的所有游戏都会自动重新调整(ID5将变为6,ID6将变为7,依此类推)


有没有一种方法可以设置表来实现这一点,或者我可以使用特定的SQL命令来实现这一点?如果已经有人以不同的方式多次询问此问题,则表示歉意。感谢所有反馈。

不,自动递增要求是唯一的,但不要求是任何特定顺序,甚至不要求是连续的。自动递增是单调递增的,这一事实只是由于其实现的巧合。不要依赖于按时间顺序排列的值


尝试调整值不仅是手动的,而且很笨拙,而且有风险,否则需要锁定很多行。如果插入一个id为5的行,但表中的行数比id 5大10亿行,该怎么办

此外,主键列也有重新编号的风险,因为任何收到电子邮件告诉他们需要进入第42场比赛的用户都可能会进入错误的比赛


如果需要按特定顺序(例如按时间顺序)查看行,则使用日期列,而不是自动递增列。

否,自动递增要求是唯一的,但不要求按任何特定顺序,甚至不要求是连续的。自动递增是单调递增的,这一事实只是由于其实现的巧合。不要依赖于按时间顺序排列的值


尝试调整值不仅是手动的,而且很笨拙,而且有风险,否则需要锁定很多行。如果插入一个id为5的行,但表中的行数比id 5大10亿行,该怎么办

此外,主键列也有重新编号的风险,因为任何收到电子邮件告诉他们需要进入第42场比赛的用户都可能会进入错误的比赛


如果需要按特定顺序(如按时间顺序)查看行,则使用日期列,而不是自动递增列。

不应使用主键。添加一个特殊列,如带有常规
索引的
sort
,而不是
UNIQUE
。它也不必是
INT
,您可以使用。这样,您将始终能够在计划的任意两行之间插入新行。

您不应该使用主键。添加一个特殊列,如带有常规
索引的
sort
,而不是
UNIQUE
。它也不必是
INT
,您可以使用。这样,您将始终能够在计划的任意两行之间插入新行。

“如果插入id为5的行,但表中的行数大于id 5的行数为10亿行,该怎么办?”。。真讨厌!非常感谢您的有用反馈。“如果您插入一个id为5的行,但您的表中有10亿行大于id 5,该怎么办?”确切地说。。真讨厌!非常感谢您的宝贵反馈。