oracle中自增长序列如何让它从数据表中现存的ID号开始增长。

比如Account表中已经存在数据IDUNAMEPASSWDIDCARDBALANCESTATUSOPENDATE----------------------------... 比如Account表中已经存在数据

ID UNAME PASSWD IDCARD BALANCE STATUS OPENDATE
---- -------------------- ------ ------------------ ---------- ---------- --------------
1 陈xxx 123456 420323191910313315 1000 1 19-9月 -12
2 安xx 123456 420323191910013315 1000 1 19-9月 -12
3 张三 123456 420323198310023215 1000 1 19-9月 -12
4 小刘 123456 420323198010033515 1000 1 19-9月 -12

我创建了一个自增长序列sqId:
create sequence sqId
increment by 1
start with 1
maxvalue 9999
nocycle
nocache
/
然后插入一条数据
insert into BAccount(ID,uname,passwd,IDCard,balance,status)
values(sqId.nextval,'大象','123456','420323193910043715',1000,1);
如何让 此处插入的数据的ID是从5开始了?
展开
 我来答
firecym
2012-09-19 · TA获得超过571个赞
知道答主
回答量:83
采纳率:0%
帮助的人:33.6万
展开全部
三种方法:
1. 需要将你的序列先删掉,然后重新建立,直接在create的时候start with 5就行了...
create sequence sqId
increment by 1
start with 5
maxvalue 9999
nocycle
nocache

2. 使用pl/sql developer的话,直接编辑你的序列,把next number 设置成5就行了。

3. 执行下面语句5次(数值太大量肯定不行):
select sqld.nextval from dual;
意思就是让当前序列的值先增到5,就可以了。

建议使用第一和第二个~
追问
我的意思是如果我们不知道BAccount表当前的ID的值,就用SQL语句,你如何达到同样的效果?
追答
两种解决办法:
1. 直接select max(id) from BAccount,将这个查询结果赋值给一个变量,例如变量 i ,即当前最大的ID,那么插入的时候,直接使用 i+1作为ID就行了。
要是这样的话,序列就没啥用了...
2. 还是要查询出最大的ID,然后跟序列的nextval比较,如果序列的值比ID要小,那么写个循环将差值补上来,然后使用nextval来insert,这个就绕了弯子了...
for ...loop
select sqld.nextval from dual;
...
TableDI
2024-07-18 广告
仅需3步!不写公式自动完成Excel vlookup表格匹配!Excel在线免,vlookup工具,点击26步自动完成表格匹配,无需手写公式,免费使用!... 点击进入详情页
本回答由TableDI提供
金久利8384
2012-09-19 · TA获得超过114个赞
知道小有建树答主
回答量:130
采纳率:0%
帮助的人:74.7万
展开全部
insert into BAccount(ID,uname,passwd,IDCard,balance,status)
values(sqId.nextval+4,'大象','123456','420323193910043715',1000,1);

或者直接把序列的下个值改了就行了。
更多追问追答
追问
如果我们不知道BAccount表当前的ID,你如何达到同样的效果?
追答
select  max(BAccount.id) into ll_id from BAccount;
insert into BAccount(ID,uname,passwd,IDCard,balance,status)
values(sqId.nextval+id ,'大象','123456','420323193910043715',1000,1);
你这序列有用吗哥们。是个无用的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
都来跪拜大多特6L
2012-09-19 · TA获得超过148个赞
知道小有建树答主
回答量:424
采纳率:0%
帮助的人:111万
展开全部
把序号的开始弄好就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式