日期:2014-05-17  浏览次数:20781 次

oracle 删除数据时自增长ID问题
我又一个表是自增长ID的,怎样实现在删除数据之后再次插入数据时,ID的值还是连续的
例如当前表1有ID,A两个字段;有十条数据
ID A
1 a
2 a
3 a
4 a
5 a
6 a
7 a
8 a
9 a
10 a
删除第九条数据后,再插入一条数据,这条数据的ID字段是9
这个功能怎么实现

------解决方案--------------------
这样好像没什么必要吧!序列一旦过去不能回来的!
------解决方案--------------------
你的业务主键呢???
一般大型系统很少见到删除语句的,都是有额外的valid字段,比如status=0表示无效,status=1表示有效
你的业务设计有问题
------解决方案--------------------
同意一楼的看法,作为业务表没有必要这样处理。
探讨
要保证连续性,最好再加个字段吧,序列只保证唯一性
可以建个表,储存删除记录的序列。建个触发器,删除记录时出发,将该id插入到前面建的表中。
当插入新记录时,从前面的表里面取,取完删除之。如果表为空,再从序列中取值
如果只是为了节约序列值,实在没什么必要..

------解决方案--------------------
select id from 表1
start with id=1
connect by id = prior id+1;出连续id 然后取出连续id的max 然后查出所有id的max
比较
相当于插入前做了个复杂的判断
的却如前面说得 id只起标志作用 建议不用