2012-12-13 33 views
1

我已經訪問DB和我使用下面的命令修改某些表:訪問自動編號的順序改變與維修

ALTER TABLE TestTable ALTER COLUMN ID AUTOINCREMENT(1001,1) 

此表具有第一列ID作爲自動編號。表格創建後,我做了一個緊湊的&修復。但是,在插入數據時,第一個ID被設置爲1而不是1001.如果我沒有進行緊湊修復,則第一個Id被設置爲1001,如預期的那樣。我無法控制何時執行小型維修。那麼有沒有辦法確保ID始終始於1001?

+2

不要依賴Access中自動增量列的值,或者Oracle中的序列生成ID或SQL Server中的自動增量列的值不僅僅是無意義的唯一數字。在Access中,壓縮和修復會重置起始值,並且每次骯髒時都會生成間隙,但不會創建新記錄。 –

回答

1

自動編號的種子值不是靜態的。只要添加一行,種子就會重置爲先前的種子值加上增量。

壓縮的一個有意義的特徵是根據自動編號字段中包含的當前值重置種子。

沒有簡單的簡單解決方法。

您可以創建一個autoexec宏來檢查您的自動編號的當前種子值,並在您的DDL語句小於1001時執行您的DDL語句。每次打開數據庫時都會按照您的意願設置它。

或者你可以添加一個虛擬行到TestTable與ID = 1000,並確保你永遠不會刪除該行。但這很醜陋。

或者你可以使ID長整數,並創建自己的自定義自動編號代碼,以確定您存儲在那裏的值。但這並不容易或不方便。