当前位置:  技术问答>java相关

疑惑,请帮忙

    来源: 互联网  发布时间:2017-03-28

    本文导语:  我要向oracle81中的一个表中插入纪录, 该表由id(主键),name等字段,id为有意义的数字,就想学号一样,id由jsp页面读来的3位数字+DAO中产生的3位流水号生成, 譬如说100001,100002,100003.......,流水号最大限制为999, 我的疑...

我要向oracle81中的一个表中插入纪录,
该表由id(主键),name等字段,id为有意义的数字,就想学号一样,id由jsp页面读来的3位数字+DAO中产生的3位流水号生成,
譬如说100001,100002,100003.......,流水号最大限制为999,
我的疑惑是:假设表中现有100001,100002......100009,100010十个连续的纪录,现在我又增加了一条,我的insert方法是在DAO中用sql语句max(id)找出最大id 100010,在他后面insert 100011这条记录,过了一会儿,我将100005这条记录删除了,等到下次我再添加纪录时,却还是用max(id)找最大的id 100011,在他后面insert 100012,可是此时100004和100006之间就出现空缺,这样下去的话,流水号达到999时就会出错了(该表实际记录数肯定在500以下),我知道原因是由我在DAO中用先找MAX(ID),然后再接着这个ID插入记录这个方法产生的,但是我不知道其他的方法,
各位大侠,用什么方法或sql语句能实现这样的:
就是当我把100005删除后,下次再添加纪录时,不是在100011后面插入,而是自动找到100004和1000006之间的空缺,发现数字不连续,将纪录插为100005,这样就可以避免流水号浪费。
在数据库中实现还是在DAO中实现,那个效率更高?
不知道我表述明白了吗?
请帮忙,多谢多谢。  

|
倒是个好办法,不过有没有不增加表而实现同样功能的方法?

|
这样,当你删除记录的时候,将要删除记录的流水号插入另一个表中,之后插入新记录的时候从这个表中去流水号最小的一个,之后从这个表中将该流水号删除。怎么样?我的方法不错吧,当然如果这个表中没有数据,也就是你没有删除过记录就过你说的方法去做

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。














站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3