我先用语句:
create sequence ProjectID
start with 1000000000
Maxvalue 9999999999
Minvalue 1;创建了一个ProjectId的序列号.然后我在程序中用
select ProjectId.nextVal from dual 取序列号.
但是现在遇到一个怪问题.有时候序列号是以1为步长增长的.而是有时候却以任意的步长增长.下面是在程序中取到的序列号
1000000880
1000000860
1000000843
1000000842
1000000841
1000000840
1000000820
1000000800
1000000780
1000000767
1000000766
1000000765
1000000764
1000000763
1000000762
1000000761
可以确定是没有多个程序在调用select ProjectId.nextVal from dual
是不是我的创建序列的语句有问题?
create sequence ProjectID
start with 1000000000
Maxvalue 9999999999
Minvalue 1;创建了一个ProjectId的序列号.然后我在程序中用
select ProjectId.nextVal from dual 取序列号.
但是现在遇到一个怪问题.有时候序列号是以1为步长增长的.而是有时候却以任意的步长增长.下面是在程序中取到的序列号
1000000880
1000000860
1000000843
1000000842
1000000841
1000000840
1000000820
1000000800
1000000780
1000000767
1000000766
1000000765
1000000764
1000000763
1000000762
1000000761
可以确定是没有多个程序在调用select ProjectId.nextVal from dual
是不是我的创建序列的语句有问题?
[2007-03-16 21:47:09]Projectid: 1000000764
[2007-03-16 21:57:52]Projectid: 1000000765
[2007-03-16 21:59:54]Projectid: 1000000766
[2007-03-16 22:01:26]Projectid: 1000000767
[2007-03-16 22:30:58]Projectid: 1000000780
[2007-03-16 23:06:22]Projectid: 1000000800
[2007-03-16 23:51:38]Projectid: 1000000820
minvalue 1
maxvalue 9999999999
start with 10000000000
increment by 1
nocycle
order;
这样试试
1、读取后因transaction被rollback;
2、多个进程并发。你可以试一下:
create table t (a number(10), d date);
for i in 1 .. 1000
begin
insert into t values (ProjectId.nextVal, sysdate);
end;
create sequence Seq_ProjectID
minvalue 1000000000
maxvalue 9999999999
start with 1
increment by 1
cache 300