Oracle中序列到达最大值会产生什么问题?

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lcw081307114/article/details/84415562
序列是oracle提供的用于生成一系列唯一数字的数据库对象,序列会自动生成顺序递增的序列号,以实现自动提供唯一的主键值,系列可以在多个用户并发环境中使用,并且可以为所有用户生成不重复的顺序数字,而不需要任何额外的I/O开销。

创建序列
序列和视图一样,并不占用实际的存储空间,只是在数据字典中保存他的定义信息。当创建序列时必须拥有create sequence系统权限。
语法格式:
create sequence seq_name
[start with n]
[minvalue n | nomainvalue]
[maxvalue n | nomaxvalue]
[cache n | ncache]
[cycle | nocycle]
[order | noorder];
含义:
seq_name:创建的序列名。
Increment :该子句是可选的,表示序列的增量。一个正数将生成一个递增的序列,一个负数将生成一个递减的序列。默认值为1
minvalue:可选的子句,决定序列生成的最小值。
maxvalue:可选的子句,决定序列生成的最大值。
start: 可选的子句,制定序列的开始位置。默认情况下,递增序列的起始值为minvalue,递减序列的起始值为maxvalue。
cache:该选项决定是否产生序列号预分配,并存储在内存中。
cycle: 可选的关键字,当序列到达最大值(maxvalue)或者最小值(minvalue)时可复位并继续下去。如果达到极限。生成的下一个数据将分别是最小值或者最大值。如果使用NO CYCLE 选项,那么在序列达到最大值或最小值之后,如果再试图获取下一个值将返回一个错误。
order: 该选项可以保证生成的序列值是按顺序产生的。例如:order可以保证第一个请求得到的数为1,第二个请求得到的数为2,以此类推而NOODDER只保证序列的值唯一性,不保证产生列值的顺序。
例子:
create sequence seq_dept
maxvalue 99--序列产生产生的最大值。
start with 50 --从50开始
increment by 10--每次跳10个序列号递增
cache 10;--在系统中预分配10个。将来生成的序列号为50,60,70,80,90
注意:
使用序列时,需要用到序列的两个伪列NexVal与CurrVal。其中nextval将返回序列生成的下一个序列号,而伪列currval则会返回序列的当前序列号。需要注意,首次引用序列时,必须使用伪列nextval。
例如:insert into scott.dept(deptno,dname,loc) values(seq_dept.nextval,'development',default);
执行以上句子后,会为dept表插入一条数据,并且deptno列会使用序deptno_seq生成的序列号。另外,如果用户要确定当前序列号,可以使用伪列currval。
例如: select seq_dept from dual;
展开阅读全文

上升序列和的最大值

06-11

EOJ上2958,由非负整数bi(0≤i 一个长度为n的序列a0, a1, ...,an-1,存在多种上升子序列:rn ai0, a i1, ..., a ik (0≤i0< i1<... 例如:序列1, 7, 3, 5, 9, 4, 8的上升子序列有1, 7、3, 5, 8、1, 3, 5, 9等。这些上升子序列中序列和最大为18,为上升子序列1, 3, 5, 9的和。rn 对于给定的序列,求出上升子序列和的最大值。rnrnInput rnrn第1行:整数T(1≤T≤10)为问题数rn 第2行:第1个问题的整数n(1≤n≤5000)rn 第3行:n个整数ai(0≤ai≤4000),由一个空格隔开。这些数的值有些可能是相等的。rn 后面是第2 ∽ T个问题的数据。格式与第1个问题相同。 rnrnOutput rnrn对于每个问题,输出一行问题的编号(0开始编号,格式:case #0: 等),然后在一行中输出上升子序列和的最大值。 rnrnSample Input rnrn2rn 7rn 1 7 3 5 9 4 8rn 4rn 100 20 20 3 rnrnSample Output rnrncase #0:rn 18rn case #1:rn 100 rnrnrnrn我不知道为什么wa了。。。。rnrnrn#includern#includernint compare(void const*a,void const*b)rnrn return *(int*)b-*(int*)a;rnrnvoid solve()rnrn int n,sum;rn long long int max=0;rn int i,j,k,t=0;rn int a[5005];rn long long int b[5005];rn scanf("%d",&n);rn for(i=0;imax)rn rn sum+=a[j];rn max=a[j];rn rn for(k=j+1;kmax)rn rn sum+=a[k];rn max=a[k];rn rn rn b[t]=sum;rn sum=a[i];rn max=a[i];rn t++;rn rn rn qsort(b,t,sizeof(long long int),compare);rn printf("%I64d\n",b[0]);rnrnint main()rnrn int i,t;rn scanf("%d",&t);rn for(i=0;i 论坛

没有更多推荐了,返回首页