會員登錄 - 用戶注冊 - 網(wǎng)站地圖 Office中國(office-cn.net),專業(yè)Office論壇
當前位置:主頁 > 技巧 > Access技巧 > 數(shù)據(jù)表 > 正文

自動編號的字段在刪除記錄后編號不連續(xù)

時間:2005-02-04 00:00 來源:Access911 作者:cg1『文章… 閱讀:



問題:

 
自動編號的字段在刪除記錄后編號不連續(xù)
比如原來有10條記錄,刪除其中第2條,序號2就變空號了
當表中某條記錄被刪除后,如何使后續(xù)的記錄自動重新編號?

回答:

  關(guān)于自動編號和壓縮數(shù)據(jù)庫 
你必須理解,自動編號(長整型)的目的不是為了使記錄號連續(xù),其用途有2個
1、標識記錄的唯一性
2、標識記錄的生成順序
基于上述原因,你想使用自動編號字段來表示連續(xù)的記錄號本身這個思路就是錯誤的。

 

如何表示連續(xù)的記錄號有以下幾個辦法:
1、再建立一個專門用來存放記錄號的字段,比如 RecordNo
    添加記錄時可以用 MAX(recordNO)+1 的方法。
    當要刪除某條記錄時,比如這條記錄的recordNo=6,我們用

    

delete from table where recordNo=6

 

    來做。這樣就會產(chǎn)生空號,然后再用

    

update table set recordno=recordno-1 where recordno>6

 

    即可

 

2、在表中不存放記錄號的數(shù)據(jù),用sql查詢自動生成

 

select [id],a,b,c,(select count(*) from table table2 where table2.[id]<=table1.[id]) as recordno from table table1 order by [id]

 

    其中 [id] 字段為自動編號字段

 

 

 


問題:
 

  access2000中 有一自動編號的字段ID,ID 已有值分別為1,2,3,4,5,6,7,將6,7刪除后,再壓縮數(shù)據(jù)庫,再新加記錄,在不同的電腦上會出現(xiàn)不同的情況如下:
1,新ID 為6,7,8,9
2,新ID 為8,9

 

在ID為1,2,3,4,5,6,7的情況下,將4,5刪除后,再壓縮數(shù)據(jù)庫,再新加記錄,在不同的電腦上會出現(xiàn)不同的情況如下:
3,新ID為4,5,然后是6(出錯,因為是主鍵不能重復(fù))
4,新ID為8,9。。。
請問哪中情況是正常的,其他不正常的原因是什么。謝謝。

 

 

回答:
 

  你說的幾種情況全部屬于正常

 

1、自動編號是由 JET  引擎來設(shè)置的
2、自動編號 會自動被作為主鍵,而且有不重復(fù)索引
3、你可以不要將自動編號作為主鍵以及不要建立索引,將索引改為無
4、自動編號的起始值和步進值都是可以用程序等方法更改的,不是固定的
5、雖然你更改了起始值和步進值,但是如果新生成的值違反了“主鍵”或者“索引”的約束會產(chǎn)生錯誤
6、默認情況下,即使刪除了記錄,這條記錄的自動編號也不會恢復(fù)。

以下是對情況的分析
1、你使用了比如壓縮修復(fù)、UPDATE、ALTER TABLE 等方法更改了初始值
2、默認情況下就是這樣
3、因為使用了壓縮修復(fù)等方法,導(dǎo)致初始值重新從4開始,但是增加到6的時候,原來記錄里面已經(jīng)存在6這個編號了,違反了主鍵約束,所以產(chǎn)生錯誤
4、默認情況下就是這樣。


(責(zé)任編輯:admin)

頂一下
(0)
0%
踩一下
(0)
0%
發(fā)表評論
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
評價: