主题:  关于数据库自动编号问题?

Michael

职务:普通成员
等级:1
金币:1.0
发贴:230
#12004/8/12 11:48:49
数据库中的自动编号是从1往下编的,但是我把数据库里的记录全部删掉后,以后再次往数据库里添记录时,我希望还是从1开始往下编,但事与愿违呀,还是接着上次的编号往下编的,有没有办法实现我的那个想法呢?请高手指点。



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#22004/8/12 12:31:50
不行

你可以先把该字段删除,然后再添加



elite_5d

职务:普通成员
等级:2
金币:1.0
发贴:330
#32004/8/12 19:23:40
如果放弃自动排号可以通过IF使序列号按顺序显示...



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#42004/8/13 9:55:40
“标识”列的功能就好比GUID,它确保值总是唯一的,虽然后者只是理论上是这样。



dreamexpress_5d

职务:普通成员
等级:1
金币:10.0
发贴:2229
#52004/8/13 15:36:35
忠告:楼主的观念需要要转变一下~

其实自动编号是确保记录的该键唯一性,其编号的缺失与否对数据库来讲是不重要的。

1、初学者往往希望自动编号能是“不浪费的”,即删除一条记录后“还能在该位置加一条同样编号的记录”。实际自动编号是不能这样的,而是按设定的递增方式和种子去产生新的编号,删除了以前产生的编号就不会再有这个号了。

2、自动编号列___其主要目的是让字段唯一,而不是给你“好看的编号”,对于程序来讲,可根据编号搜索出记录就行,编号间断没什么关系。

3、如用户想有连续的编号,那就不应删除记录,而应修改记录:比如公司的职员编号,当职工要离开公司,不应删除它的信息,而应等有新人来修改那个已走人的信息。(实际中可能没有程序员这样做)

4、连续的编号不应采用“自动编号”来实现,应考虑采用自已的程序方式来实现(另外,再加一个“实际使用编号”字段,且不设为自动编号列):当删除记录时,应在数据库记下这个“实际使用编号”,一但有新的记录要插进来时,就找出以前删除的号来用,如以前删除的号没有就新建编号。呵呵。。。。,当然编号的规则你得设定好。。。



沉默是金

职务:普通成员
等级:6
金币:11.2
发贴:4357
#62004/8/14 10:02:24
truncate table table_name --慎用
truncate table table_name 和 delete from table_name同样都是清空table_name,但如果有自动编号的话,用DELETE方法,仍然会记忆最后一次的ID号,而truncate则是将数据库重新整合,ID会自动从1开始记录。

以下是SQL中引用过来的:
TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。

DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

在SQL SERVER中可以实现楼主的要求,但ACCESS中没有测试过。

编辑历史:[此帖最近一次被 arhui 编辑过(编辑时间:2004-08-14 10:11:12)]

难人一个……

大当家

职务:普通成员
等级:3
金币:1.0
发贴:767
#72004/8/15 16:45:59
如果只是为了好看,每次删除记录时删除字段,然后重建。。哈