mysql - mysql:删除行后重置计数器
问题描述
删除或截断表会重置计数器(AUTO_INCREMENT),但删除选定的行(使用 WHERE 子句)不会重置计数器。
我希望它从删除行的地方继续它。
有什么办法可以重置计数器吗?请按照以下示例更好地理解。
mysql> create table dummy(id int NOT NULL AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (2.09 sec)
mysql> insert into dummy values (),(),(),(),(),();
Query OK, 6 rows affected (0.19 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> select * from dummy;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+----+
6 rows in set (0.00 sec)
mysql> delete from dummy where id>4;
Query OK, 2 rows affected (0.23 sec)
mysql> select * from dummy;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
+----+
4 rows in set (0.00 sec)
mysql> insert into dummy values (),(),(),(),(),();
Query OK, 6 rows affected (0.18 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> select * from dummy;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
+----+
10 rows in set (0.00 sec)
我想要的是:
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+----+
解决方案
我们可以alter table dummy AUTO_INCREMENT=1;
在delete语句后查询;
因此,一旦我们向表中添加新值,它就会检查现有表,应该为从 0 开始的 id 分配什么值,并将分配恰好比表的最大 id 大 1 的值.
所以,它会像:
mysql> delete from dummy where id>4;
Query OK, 2 rows affected (0.14 sec)
mysql> select * from dummy;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
+----+
4 rows in set (0.00 sec)
mysql> alter table dummy AUTO_INCREMENT=1;
Query OK, 0 rows affected (0.21 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> insert into dummy values (),(),(),(),(),();
Query OK, 6 rows affected (0.18 sec)
Records: 6 Duplicates: 0 Warnings: 0
我们将以顺序形式得到:
select * from dummy;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+----+
谢谢@jspcal
推荐阅读
- javascript - 如何在shopify中带来最后一次用户购买?
- python - 检查Python中的多键字典中是否存在集合的元素?
- php - 如何在 Laravel 中将产品数组的价格与其数量相加
- java - 在 LibGDX 中设置窗口模式分辨率会出错
- angular - Angular CKEditor无法使用所需值设置数据属性
- neo4j - 合并时面临 IndexEntryConflictException
- excel - SAP Macro通过Excel运行,如何获取数据以填充Excel工作表?
- python - 将任务发送给 celery 中的两个单独的工人
- powerbi - 如何按所需顺序显示切片器中的多选值 - Power BI
- vba - MS Word set OutlineDemote to text after specific word