一、获取自增值方法:
-
select max(id) from tbname:实际是选出表格最大id;
-
select @@identity或select last_insert_id:这两个选取最后插入数据的自增ID,与所操作的表格无关;若用一条insert语句同时插入多条自增记录,则选出的是第一条的自增ID(此方法在不同客户端对同一表格进行操作不会互相影响所选出的自增值);插入非0、非null值不会对查询结果产生影响,如:
-
mysql> select*from test2; +----+------+ | id | name | +----+------+ | 1 | a | | 2 | f | | 3 | c | | 4 | a | | 6 | d | +----+------+ 5 rows in set mysql> insert into test2 values(25,'a'); Query OK, 1 row affected mysql> select @@identity; +------------+ | @@identity | +------------+ | 0 | +------------+ 1 row in set mysql> select last_insert_id(); +------------------+ | last_insert_id() | +------------------+ | 0 | +------------------+ 1 row in set
-
show table status like '%tbname%':查看表格信息,有一行信息为下一个自增值,注意即使手动将之前的记录删除,自增值也不会往回减少,只会继续增加;
-
从information_schema表中选出信息:
mysql> select table_name,auto_increment from information_schema.tables where table_name
-> ='test2';
+------------+----------------+
| table_name | auto_increment |
+------------+----------------+
| test2 | 3 |
+------------+----------------+
1 row in set
二、重置自增值:
自增列记录删除后,自增值依旧按照之前的继续增加,手动添加记录,例如当前自增ID为5,手动添加记录ID为10。
重置自增值语句:alter table tbname auto_increment=1; 只有对无记录的自增列才能重置,例如有一条记录为ID=6,即使使用重置语句,自增值依然会从7算起: