【问题标题】:reset autoincrement primary key sql, mysql [duplicate]重置自动增量主键sql,mysql [重复]
【发布时间】:2018-11-30 20:43:37
【问题描述】:

我有这张表 Post 有 1000 行,其中 id_post 是主键设置为autoincrement

id_post | post
  1        hi1
  2        hi2
   ...
 1000     hi1000

我删除了从 301 到 1000 的行。所以我现在有一个从 1 到 300 的行列表。

id_post | post
  1        hi1
  2        hi2
   ...
 300     hi300

问题

当尝试添加新行时,id_post 从 1001 开始,如何重置表并使其从 301 开始?

【问题讨论】:

  • 在用完 700 个 ID 后,你会怎么做? AUTOINCREMENT 应该保持原样。你不能保证没有间隙,因为它不是这样设计的。 ALTER TABLE post AUTO_INCREMENT = 300;
  • 我知道应该留下。但这是一个帖子表,其中有默认帖子和用户帖子。 300 个是默认帖子。
  • 1) 创建从 1 到 1000 的新表 2) 删除旧表 3) 将新表的名称更改为旧表的名称
  • @LukaszSzozda 方法是要走的路。谢谢。 Lukasz 随时发布答案以标记它。谢谢你成功了。
  • @Dan - 您也可以将 id 设置为 1(如 Lukasz Szozda 的回答),然后 Mysql 将获得下一个免费 id。

标签: mysql sql


【解决方案1】:

您可以截断该表以重置您的身份列。像这样:

truncate table [table_name]

或者你可以使用 CHECKIDENT 命令:

  DBCC CHECKIDENT('table', RESEED, 0)

【讨论】:

    【解决方案2】:

    首先,我会留下空白。如果你真的想改变它,你可以使用:

     ALTER TABLE post AUTO_INCREMENT = 300;
     -- around 700 insterts
     ALTER TABLE post AUTO_INCREMENT = ?; -- where ? is max value of id_post
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      相关资源
      最近更新 更多