数据库设计问题,自动增量.....(100分)

  • 主题发起人 主题发起人 yk5748_cn
  • 开始时间 开始时间
Y

yk5748_cn

Unregistered / Unconfirmed
GUEST, unregistred user!
本人在使用SQL SERVER7.0 数据库时遇到如下情况,设计表中的某一字段为
自动增量(1),其实现后在删除任何记录后其表中的增量没有自动减1,(如一
字段ID,其记录有1,2,3,4...,在删除2,3之后,其记录仅有1,4....,要求现在
的1,4...自动成为1,2...,但是表中的ID标志还是1,4....,该如何实现ID自动
成为1,2...?各位网友请多多指教,谢谢!
如果方便,请E_Main:wangyukai15725@163.net
 
不可以的,自动增量只能一个劲地往上长,不会回头补缺的。
除非自己重新排序赋值,那就有得烦了
 
自动增量是不会实现你的要求的,如果不想费事并且记录不算太多
可以试试下面的愚蠢办法,那就是把所有记录转移到另一个结构完全
相同的表里,ID就会如你所愿了!
 
是否可以考在Delete事件中处理:比如删除了10,将11--》10,12--》11,...
不过够烦的。newwen的方法比较可行!
 
首先说清楚你为什么要这个功能
有意义吗
 
现在的数据库没有这个功能。我碰到这种需求时
是自己做一个取最小未占用号的函数,算法是从
1递增一个一个地试。这个算法不好,费时费资源。
最好的方案是在这个表上加建trigger,并在另
一个表中记录这个表这个域的最小未占用号,然后
在每次插入和删除的trigger中做判断,修改这个
最小未占用号。
 
to kknight:你这样的话,如果删除了2的话,那么最小的未占用号是多少呢?是2还是5?
如果下次的ID用2的话,会不会影响它的排列顺序?
 
to 教富:是2啊。算法是在删除的trigger中做判断:
如果所删的号 < 最小未占用号,则
最小未占用号:=所删的号;

增加时的trigger就比较惨了,要递增地往下判断。//sigh
还是做一个取最小未占用号的stored procedure吧。
这样的需求,....真是......
 
我觉得还是等SQL SERVER3000吧。
 
这么做没有必要吧,你只不过是要显示给用户,让用户看上去觉得记录号是连续的,
这可以在客户端上作,就是用delphi显示记录时加一个计算字段,数据刷新时由程序
给记录从头编号,数据库里我想不会设计这种类型的数据类型,因为对于数据存取效率,
数据冲突监测等等都没有好处,我见过象你这样需求的一般都是在客户端上作的,数据库
里实际上并不存储1,2,3 ....之类的序号...
 
有必要吗。
 
  我觉得自动增加字段的作用一般是用作唯一索引用的。那就不用管他的大小和有没有顺
序了。主要是可以加快查询速度。
  你想要的是很难轻易实现的。
 
多人接受答案了。
 
后退
顶部