加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.cn/)- 专有云、图像技术、经验、数据治理、专属主机!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql自增id不连续怎么解决

发布时间:2022-06-13 15:06:27 所属栏目:MySql教程 来源:互联网
导读:MySQL在navicat中设置唯一字段: 索引(选择字段) 索引类型(UNIQUE) 当表中存在唯一字段,主键id自增时,插入新数据的时候唯一字段已存在,插入失败 但此时id已自增+1,再次插入数据造成id不连续问题。 -- 执行之后,不是表明将插入的id设置为1;而是设置
  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自增id不连续怎么解决”的内容就介绍到这里了,感谢大家的阅读。

(编辑:南通站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读