关于主键自增长问题

关于主键自增长问题

设置id自增长后,每次添加内容时,如果添加错误id值仍然在增长,怎么能设置为输入错误,id值不增长

正在回答

登陆购买课程后可参与讨论,去登陆

7回答

你好!要是有多个字段,要把字段写完整,比如下面是两个字段,最后一条语句的select后也要是两个字段,select前的小括号里也要是对应的字段才可以。

create table tb1(id int not null auto_increment primary key,username varchar(20),password varchar(20));

insert into tb1(username,password) values("aa","111111");

insert into tb1(username,password) values("bb","111111");

insert into tb1(username,password) values("cc","111111");

create table tb2(id int not null auto_increment primary key,username varchar(20),password varchar(20));

insert into tb2(username,password) select username,password from tb1;

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

提问者 小煜_ 2019-07-29 16:42:53

你好老师,我已经试过了    只添加用户名是没有问题的     在添加多个字段时就行不通了

会出现错误  Column count doesn't match value count at row 1

好帮手慕珊 2019-07-29 14:57:49

你好!可以像下面这样,新创建一个表格tb2,将除了id字段外的其他字段的值,从tb1表格查询出来,存储到tb2表格中,这样tb2的id字段就是连续自增了。

create table tb1(id int not null auto_increment primary key,username varchar(20));

insert into tb1(username) values("aa");

insert into tb1(username) values("bb");

insert into tb1(username) values("cc");

create table tb2(id int not null auto_increment primary key,username varchar(20));

insert into tb2(username) select username from tb1;

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

提问者 小煜_ 2019-07-28 09:25:20

老师我好像明白了,如果是添加唯一索引错误,id值会跳过,如果是其他得值添加错误,id值会连续


  • 你好!我也试了一下,确实使用唯一索引的列如果插入错误,id值不连续。id值如果不连续也没关系,如果已经有数据了,还想让其连续,可以采用表的复制。将一个表的数据查询出来添加到另一个表中。祝学习愉快!
    2019-07-28 15:45:08
  • 提问者 小煜_ 回复 好帮手慕珊 #2
    具体是怎么操作呢 用insert tb_name select * from tb1_name 会将原来的id顺序复制
    2019-07-29 12:43:57
提问者 小煜_ 2019-07-28 09:19:40

一开始插入一条正确语句   id为1

http://img1.sycdn.imooc.com//climg/5d3cf78b0001566a07030163.jpg

此时id自增长值为2

http://img1.sycdn.imooc.com//climg/5d3cf7c20001f18905970198.jpg

插入一条错误语句后   再次查询   此时自增长值为3

http://img1.sycdn.imooc.com//climg/5d3cf8020001a5ea07740514.jpg

但是id为2的语句并没有插入    请问这是为什么

提问者 小煜_ 2019-07-27 22:36:10
好帮手慕阿满 2019-07-27 18:08:10

同学你好,这边测试自增主键增长,添加错误id并不会自增,如:

create table test1(
id int auto_increment key,
name varchar(10)
);
insert into test1 values(null,'aa');
insert into test1 values(null,'bb');
insert into test1 values(null,cc);
insert into test1 values(null,'cc');
select * from test1;

http://img1.sycdn.imooc.com//climg/5d3c226c00015ea705080452.jpg

建议同学再试试

祝:学习愉快~

  • 提问者 小煜_ #1
    那为什么会出现id值空几个数再连续呢
    2019-07-27 22:34:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师