作者:夫功的美丽家园 | 来源:互联网 | 2023-09-18 02:25
我用SQL2000在建如教师表时,主键是教师编号,设置的是自动编号。但是在录入数据时,比如录入了1,2,3条记录,现在删了记录2,又开始录入数据,系统自动默认这条新纪录编号为4。我想设置记录范围比
我用SQL2000在建如教师表时,主键是教师编号,设置的是自动编号。但是在录入数据时,比如录入了1,2,3条记录,现在删了记录2,又开始录入数据,系统自动默认
这条新纪录编号为4。我想设置记录范围比如1000条记录,当录入记录到1000条时,下一条记录为最小的没用的编号。
9 个解决方案
其实,自动编号也不是很好吧,如果编号里面包含一些其他的信息,如是哪个系的等!
试试
DBCC CHECKIDENT
Checks the current identity value for the specified table and, if needed, corrects the identity value.
分多少没关系!
象教师表这样与别的表关系不大的还好说,id号(主键)可以用自增的。但某些表,比如出货单这样是一个一个出货条目表的父表的。id号用自增的可能就有不妥了。因为你在增加时要为每一个子表加上id号, 而这时还没自增呢
所以我从不用自增的id号, 我所有表的id号都是整数,另外建了一个t_max表。里面存储着所有表的id号现在到哪里了。
在程序中有一个全局函数,gf_get_max('表名')用来取得每个表的最大id号及让其加1.
如你有兴趣,给我写个短信就行。方法也不一定科学
DBCC CHECKIDENT
你查查sqlserver 2000的帮助
你可以加一个标志的字段,比如说已删除的标志为1,当1000条记录输入完之后,再添加记录时,你可以查找那些带有标志的选项去修改他,但别忘了修改是一定要把标志1改为其他值
建议你新建另一张表,用来存储自增字段,
然后在其中选择!
冒犯了,其实我觉得yk80(小贝)地回答有点小小漏洞.
c语言中的链表插入删除时,经常设置一整数标志.
但数据库中删除记录时,整个元组均被删除,当全部添加完后,根本无法查找标志为1地记录.
所以应结合使用,既要设标志,又要另建一张表.还望小贝批评指正.