www.zhnq.net > mysql中iD自动增长,如果删除某行数据,再插入新的数据

mysql中iD自动增长,如果删除某行数据,再插入新的数据

由于是数据库管理系统内部机制限死的,题主这个需求没有太好的解决方案.可以考虑在经过一段时间增删数据出现数字不连续情况后,采取删除自增ID字段,再重新添加自增ID字段来消除ID不连续的现象,也可以通过将数据导入含自增ID字段的空表等方法来消除数字间断.

有什么错误,只有你自己才知道,我们又不了解你的数据库结构的. 如果id是主键,那么你的values中 id 的值就不能为空. --> ∑╃狼╃→ 如果id是自动增长类型的,那你就不能对id插入值,让数据库自己的做. --> 傻傻的冬瓜 1、如你还错误,或许是因为表中还有其他字段的数据类型和你输入的数据类型不匹配. 2、还有其他需要输入数据的字段,不能为空的,你也必须插入值. 3、如果表中有存储过程或者触发器什么,也有可能会因为你插入的值不满足条件而出错.

你可以直接插入你想插入的id值,比如一个表:student( id, name, sex) ,1-5的记录被你删了,只有6这条,这个时候插入,不写id,则id自动为7 ,但你想插入1-5 ,可以这么写:insert into student(id,name, sex) values(1, '小王', 'male'), (2, '小李', 'femeal') 等等..也就是说,主键的值是可以自己指定的的,但前提是,这个值不存在,另外,auto_increment值是按照你当前记录中的最大id 来的,所以不要试图去改动这个值,比如你现在插入一个条id为1000的,那么之后id就会自动变为1001

是正确的.删除了就不会连续,SQL不保证自增字段必须连续的,如果需要必须连续,不能使用自增字段,要手动计算id

AUTO_INCREMENT是insert的操作计数的,也可以查看或修改,查看:show create table 表名修改:alter table 表名 AUTO_INCREMENT=数值

假设你的数据表字段为:id name sex age 这样写sql语句就可以了:insert into 数据表名(name,sex,age) values('val1',val2'','val3'); id 字段省去就可以了

ID 如果是自动增加的话,是不用管的,你只要插入name 与 passwd,id就会相应的加一条.语句是:insert into user(name,passwd) values ('张三','123');

如果需要联系的id增长的话,只能通过程序来处理了.插入数据之前,取出最后的id,然后在插入sql中指定id的值即可.

自增长字段是没办法实现这样的,不斟酌其他方面的话,可以用数字类型,然后循环表数据类似于,定义1个变量,用类似于for循环intnewid;for(inti=1;i(selectidfrombiaoorderbyiddesclimit1);i++){if((selectcount(id)frombiaowhereid=i)=0) }这样就

数据库实现自增长都是通过一个变量来实现的,就是AUTO_INCREMENT.每次插入一条数据,变量加1.你删除数据它不可能回滚,试想如果你觉得删除一条数据它就减1,你删除最大的那个ID自然没有问题,但如果你删除的是3而不是5,数据库无论将它变成5或者3都不合适,因为如果是5,显然ID为5的数据已经存在,你再次插入数据会违反主键唯一性;如果是3呢,新插入两条数据时,同样有这个问题,所以它只能不变.而且你非要再在5那插一条数据意义也不大,你可以通过指定ID来插入数据,不需要改变自增变量.在你不能确定有没有ID值比你要改的ID大时,最好不要随便改自增变量.

友情链接:rprt.net | 2639.net | rtmj.net | wlbk.net | lyxs.net | 网站地图

All rights reserved Powered by www.zhnq.net

copyright ©right 2010-2021。
www.zhnq.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com