在mysql中,可用“auto_increment”解决自增id不连续的问题,“auto_increment”用于设置主键的自动增长,只需将id的自增长设置为1即可,语法为“alter table 表名 auto_increment=1”。
本教程操作环境:windows10系统、mysql8.0.22版本、dell g3电脑。
mysql自增id不连续怎么办mysql在navicat中设置唯一字段:
索引(选择字段) >>> 索引类型(unique)
当表中存在唯一字段,主键id自增时,插入新数据的时候唯一字段已存在,插入失败
但此时id已自增+1,再次插入数据造成id不连续问题。
-- 执行之后,不是表明将插入的id设置为1;而是设置插入id为表中id最大值+1。
alter table `table` auto_increment =1;
在insert into 操作前 加上上述sql语句,将插入id设置为当前表中存在的id+1;
auto_increment是用于主键自动增长的,从1开始增长,当你把第一条记录删除时,再插入第二跳数据时,主键值是2,不是1。
例如:
create table `test`(`id` int(10) not null auto_increment, -- 表示自增列`name` varchar(20) not null,primary key(`id`))
auto_increment = 1; -- 表示自增起始大小-- 这样就可以创建一个表`test`,id为自增列
-- 执行语句 insert into test (`name`) values ('名字');
-- 就可以插入一行数据为: 1 '名字'
扩展资料:
在使用auto_increment时,应注意以下几点:
1、auto_increment是数据列的一种属性,只适用于整数类型数据列。
2、设置auto_increment属性的数据列应该是一个正数序列,所以应该把该数据列声明为unsigned,这样序列的编号个可增加一倍。
3、auto_increment数据列必须有唯一索引,以避免序号重复(即是主键或者主键的一部分)。auto_increment数据列必须具备not null属性。
4、auto_increment数据列序号的最大值受该列的数据类型约束,如tinyint数据列的最大编号是127,如加上unsigned,则最大为255。一旦达到上限,auto_increment就会失效。
5、当进行全表删除时,mysql auto_increment会从1重新开始编号。
这是因为进行全表操作时,mysql(和php搭配之最佳组合)实际是做了这样的优化操作:先把数据表里的所有数据和索引删除,然后重建数据表。
如果想删除所有的数据行又想保留序列编号信息,可这样用一个带where的delete命令以抑制mysql(和php搭配之最佳组合)的优化:delete from table_name where 1;
推荐学习:mysql视频教程
以上就是mysql自增id不连续怎么办的详细内容。