【问题标题】:mySQL start auto incrementing after initial recordsmySQL 在初始记录后开始自动递增
【发布时间】:2016-01-01 15:07:41
【问题描述】:

如果我在一个表中有 100 条记录,其主键是随机的,例如1、552 等。我想保留这些 ID,但我想开始添加新记录。最好的办法是在表中的最高主键值 + 1 处开始自动递增索引吗?

干杯

【问题讨论】:

  • 是的,这是个好方法。
  • 好吧,假设我添加了一条记录并且我的自动增量索引与现有主键索引相同,它还会使用该索引吗?
  • 。 . .我不完全理解您的评论,但自动递增和主键是两个不同的东西(通常是同一列的属性)。
  • 看看这个答案stackoverflow.com/a/21461100/382936。如果您的表还没有主键,您可以跳过DROP 查询。如果您不提供值,MySQL 将自动根据列的现有值计算 auto_increment 值。

标签: mysql sql mysqli


【解决方案1】:

您需要获取列的最大值并更改表以设置下一个 auto_increment 值:

SELECT MAX(ID) + 1 FROM table_name INTO @maxauto;
ALTER TABLE table_name AUTO_INCREMENT = @maxauto;

由于表有一个 auto_increment 字段并且值是从它生成的,因此通过 function 处理 id 值将很难管理。在其他情况下,您可以设法从表中获取未使用的ids,并将其用作id。

【讨论】:

  • 如果您使用这种方法,请确保在同一个事务中运行两个查询。否则,您可能会在执行第一个 (SELECT) 和第二个 (ALTER) 查询之间对表进行更改。
猜你喜欢
  • 2011-06-09
  • 2012-05-31
  • 2011-12-29
  • 2013-10-27
  • 1970-01-01
  • 1970-01-01
  • 2011-11-25
  • 2013-08-24
  • 1970-01-01
相关资源
最近更新 更多