MySQL 如何自动递增表的值到较小的值

MySQL 如何自动递增表的值到较小的值

如果您使用InnoDB引擎,则不能将表的自动递增值设置为较小的值。您需要将引擎从InnoDB更改为MyISAM。

注意: 引擎MyISAM允许您设置较小的值。在这里,我们使用相同的值。

根据官方文档:

您不能将计数器重置为小于或等于已使用的任何计数器的值。对于MyISAM,如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前最大值加一。对于InnoDB,如果该值小于列中当前最大值,则不会发生错误,并且当前的序列值不会更改。

如上所示,在MyISAM中,假设删除了一些Id。在此之后,如果您再次添加auto_increment,则Ids将从较小的值开始,即从剩余的最终Ids开始(在我们删除一些Ids之后)。

让我们首先创建一个具有MyISAM引擎的表:

mysql> create table DemoTable (Id int NOT NULL AUTO_INCREMENT PRIMARY KEY)ENGINE='MyISAM';
Query OK, 0 rows affected (0.23 sec)

以下是使用插入命令将记录插入表中的查询:

mysql> insert into DemoTable values();
Query OK, 1 row affected (0.04 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.03 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.03 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.02 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.05 sec)
mysql> insert into DemoTable values();
Query OK, 1 row affected (0.08 sec)

以下是使用select命令从表中显示记录的查询:

mysql> select *from DemoTable;

这将产生以下输出

+----+
| Id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
+----+
6 rows in set (0.00 sec)

现在,删除Ids 4、5和6:

mysql> delete from DemoTable where Id=4 or Id=5 or Id=6;
Query OK, 3 rows affected (0.06 sec)

让我们再次显示所有记录。以下是查询:

mysql> select *from DemoTable;

这将在删除一些Ids后产生以下输出:

+----+
| Id |
+----+
|  1 |
|  2 |
|  3 |
+----+
3 rows in set (0.00 sec)

现在,让我们设置新的auto_increment ids。

以下是将MyISAM引擎中的auto_increment值设置为较小的查询。然而,当前的auto_increment值现在应该从7开始,但由于我们使用的是MyISAM引擎,因此该值将重置为当前最大值,即3加一,即3 + 1 = 4将是新的id。

以下是查询:

mysql> alter table DemoTable auto_increment=4;
Query OK, 3 rows affected (0.38 sec)
Records: 3 Duplicates: 0 Warnings: 0

现在再次插入一些记录,然后从表中显示所有记录以检查auto_increment值是否从4开始: mysql> insert into DemoTable values(); Query OK, 1 row affected (0.03 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.06 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.02 sec)
“`

以下是从表中显示所有记录的查询:

mysql> select *from DemoTable;

这将产生以下输出。新的ids从4开始:

+----+
| Id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
|  6 |
+----+
6 rows in set (0.00 sec)

阅读更多:MySQL 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程