序列的值好象回滚不掉,怎么样才能保证序列的值是连续的?
序列的值好象回滚不掉,怎么样才能保证序列的值是连续的? 问题点数:0、回复次数:16Top
1 楼l2g32003(lg)回复于 2004-05-03 08:57:25 得分 0
不能 序列的值会因为 rollback ,数据库的 shutdown abort ,共享池的刷新 而造成不连续Top
2 楼ckc(火)回复于 2004-05-03 08:57:33 得分 0
删除序列,再重新建立,给出初值Top
3 楼laobanmail(不喜欢抽烟的人)回复于 2004-05-03 08:58:44 得分 0
序列的值不能回滚,并且,序列的连续性不一定被保证
在建序列的时候,+一句 no cache能够加强序列的连续性
但是,有时候还是不能连续性,建议要是确实需要连续的计数
还是自己写一个函数吧Top
4 楼l2g32003(lg)回复于 2004-05-03 09:09:39 得分 0
如果你想要一个连续的序列值可以考虑用一个表来替代 sequenceTop
5 楼welyngj(无爱)回复于 2004-05-03 09:10:01 得分 0
alter sequence seq1 nocacheTop
6 楼atao245993(阿涛)回复于 2004-05-03 13:17:40 得分 0
抛弃序列,
select max(id) from...
然后引用此值Top
7 楼ern(与Oracle斗,其乐无穷)回复于 2004-05-03 16:35:43 得分 0
楼上的方法是个折中,但是如果数据量较大,那效率太低Top
8 楼black_snail(●男人要忍○)回复于 2004-05-03 17:28:10 得分 0
保持绝对连续没有可能!Top
9 楼snowy_howe(天下有雪)回复于 2004-05-04 11:29:42 得分 0
保持绝对连续没有可能!
我非常赞同这句话。
如果用户非这么要求,我只好将该字段作为非关键字,
每隔一段时间执行一次重新生成数据工作,太麻烦了。Top
10 楼MountLion(闷头睡)回复于 2004-05-04 11:56:59 得分 0
select max(id) from...
有没有考虑多用户?
所以说:
保持绝对连续没有可能!
我非常赞同这句话。Top
11 楼baojianjun(包子)回复于 2004-05-04 13:23:35 得分 0
同意樓上各位的說法
如果一定要做到連續在理論上是有可以實現的
但實際如果做的話會非常麻煩,因為我們可能的做法就是對每個
新的序列值先檢查之後再修改,對於數據量大的情況那將是一個災難Top
12 楼skystar99047(天星)回复于 2004-05-04 14:00:12 得分 0
始终保持连续不太可能,如果从中删除一条记录呢,难道要把所有的记录再调整一遍吗?
所以说要求始终连续很难做。
如果想那样做,还不如用rownum,不过没什么必要:)Top
13 楼Petergepeter(拔刀斋)回复于 2004-05-04 14:57:21 得分 0
有理Top
14 楼magicnbh()回复于 2004-07-21 09:44:37 得分 0
upTop
15 楼dinya2003(OK)回复于 2004-07-21 10:16:44 得分 0
在建sequence时设置cache 10可以让该序列每次取下10个序列的值供用户使用,在系统shutdown abort时刷新共享池,系统将Top
16 楼dinya2003(OK)回复于 2004-07-21 10:19:10 得分 0
没输完就发出了 接上
系统将丢弃没有用完的序列值,导致序列不连续,如果将cache设为0,系统将不会将序列的值放到缓冲区中,影响速度,如果设置初始文件中cache的值,可以让序列连续,(此方法本人未验证)Top




