向数据库里插入新的数据id号为什么不是从头算起??

createsequenceseq_articleincrementby1startwith1;createtablearticle(idintprimarykeynot... create sequence seq_article increment by 1 start with 1;
create table article(
id int primary key not null,
pid int,
rootid int,
title varchar2(255),
cont varchar2(4000),
pdate date,
isleaf int
);

insert into article (id,pid,rootid,title,cont,pdate,isleaf) values(seq_article.nextval, 0,1,'蚂蚁大战大象','蚂蚁大战大象',sysdate,1);
insert into article (id,pid,rootid,title,cont,pdate,isleaf) values(seq_article.nextval, 1,1,'大象被打趴下了','大象被打趴下了',sysdate,1);
insert into article (id,pid,rootid,title,cont,pdate,isleaf) values(seq_article.nextval, 2,1,'蚂蚁也不好过','蚂蚁也不好过',sysdate,0);
insert into article (id,pid,rootid,title,cont,pdate,isleaf) values(seq_article.nextval, 2,1,'瞎说','瞎说',sysdate,1);
insert into article (id,pid,rootid,title,cont,pdate,isleaf) values(seq_article.nextval, 4,1,'没有瞎说','没有瞎说',sysdate,0);
insert into article (id,pid,rootid,title,cont,pdate,isleaf) values(seq_article.nextval, 1,1,'怎么可能','怎么可能',sysdate,1);
insert into article (id,pid,rootid,title,cont,pdate,isleaf) values(seq_article.nextval, 6,1,'怎么没有可能','怎么没有可能',sysdate,0);
insert into article (id,pid,rootid,title,cont,pdate,isleaf) values(seq_article.nextval, 6,1,'可能性是很大的','可能性是很大的',sysdate,0);
insert into article (id,pid,rootid,title,cont,pdate,isleaf) values(seq_article.nextval, 2,1,'大象进医院了','大象进医院了',sysdate,1);
insert into article (id,pid,rootid,title,cont,pdate,isleaf) values(seq_article.nextval, 9,1,'护士是蚂蚁','护士是蚂蚁',sysdate,0);
COMMIT;

刚开始建表的时候向数据库里插入了这些数据,然后在JSP页面里通过发表新主题又添加了一些新的数据,后来删的时候把上边添加的数据也删了,现在又把insert语句在数据库里执行了一下,插是插上去了,可是id号不是从1开始算的,是从以前加过的数据紧接着id号开始插入的,这是什么情况???
展开
 我来答
flyeit
推荐于2017-11-25 · TA获得超过2075个赞
知道小有建树答主
回答量:172
采纳率:100%
帮助的人:91.5万
展开全部
自增长字段是会一直累加上去的,不会因为记录删除而填回原来的记录,因为数据库要保证记录的唯一性,如果你要从1开始,你可以删除自增长字段,再重新加入,则会自己从1开始,也可以用命令进行重新编号
zrdlut
2012-07-06 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:106
采纳率:0%
帮助的人:88万
展开全部
数据库自动编号就是这样的,不会因为你删除数据而回滚编号,如果你想实现这个功能的话,就只能先读取最大id,然后存入最大id+1.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
du瓶邪
推荐于2018-03-10 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2946万
展开全部
SQLite中,一个自增长字段定义为INTEGER PRIMARY KEY AUTOINCREMENT,那么在插入一个新数据时,只需要将这个字段的值指定为NULL,即可由引擎自动设定其值,引擎会设定为最大的rowid+1。如果表为空,那麼将会插入1。
  比如,有一张表ID为自增:
  CREATE TABLE Product
  (
    ID INTEGER PRIMARY KEY AUTOINCREMENT,
    Name NVARCHAR(100) NOT NULL
  )

  那麼,插入的SQL就是:
  INSERT INTO Product VALUES(NULL, '产品名称')
  GO

(1)当主键设置为自动增长时候,主键数据类型必须是integer类型,不能使long类型。
(2)插入的时候,如果罗列的列中没有自动增长列,自动增长列也是可实现自动增长的。
(3)插入的时候,如果罗列的列中有自动增长列,那么设置为null,可以实现自动增长。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
L如果爱R
2012-07-06
知道答主
回答量:23
采纳率:100%
帮助的人:11.2万
展开全部
自动累加的就是这样,需要保证数据的唯一性,而唯一性就是用ID标识的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
安静的Wind
2012-07-06 · 超过76用户采纳过TA的回答
知道小有建树答主
回答量:898
采纳率:100%
帮助的人:315万
展开全部
就是这样的啊!自动累加吗!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式