mysql: сброс счетчика после удаления строк

0

Удаление или усечение таблицы сбрасывает счетчик (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 |
+----+
  • 0
    Это отличается от stackoverflow.com/questions/8923114/…
  • 0
    Выполните alter table t auto_increment = 1 после delete .
Показать ещё 1 комментарий
Теги:

1 ответ

0
Лучший ответ

Мы можем запросить alter table dummy AUTO_INCREMENT=1; после удаления;

Итак, как только мы добавим новые значения в таблицу, он будет проверять существующую таблицу, какое значение должно быть присвоено идентификатору, начинающемуся с 0, и назначит значение, которое точно равно 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню