2013-04-22 84 views
0

每次重新啓動DB2服務時,自動增量字段始終自行更改,例如: 例如:在重新啓動之前,自動遞增值爲13,並且它會增加1 ,並且在我重新啓動後,它總是變爲31,並且總是增加20 任何想法可能會導致這種情況?重新啓動後自動更改DB2自動增量

每次我重新啓動我的DB2服務,我必須執行此命令

ALTER TABLE <table> ALTER COLUMN <column> RESTART WITH 1 

回答

1

DB2具有生成值的緩存,以便減少生成值的開銷(減少IO)。這個緩存在內存中,並根據請求分配值。

創建/更改表格時請查看緩存選項。默認情況下,緩存值爲20.

理解DB2中的後綴是如何工作是很重要的。序列與生成的值/標識列共享許多概念。

+0

我嘗試使用此功能 ALTER TABLE INVENTORY ALTER COLUMN ID RESTART WITH 11 CACHE 1來改變表; 但是它似乎沒有以正確的格式 – 2013-04-22 13:58:10

+0

您收到哪個sqlcode? – AngocA 2013-04-22 13:58:58

+0

看來我已經知道了sqlcode。 – 2013-04-22 14:02:31

0

W3schools

「自動遞增允許當一個新的記錄插入到生成一個唯一的數字一張桌子。」

這是您可能期望的唯一一件事:唯一(=非衝突)數字。如何生成這些數據留給DBMS。你不能指望沒有任何差距的數字序列。

例如,出於性能原因,DBMS可能會選擇「預先分配」十個數字塊(23..32,33..42,...),以便自動增加字段只能是每增加(最多)十條記錄就會增加。如果您有一條INSERT語句只將5條記錄插入到新創建的表中,則它可以「獲取一個由10個數字組成的塊」(0..9),使用它的前五個值(0..4)並保留休息未使用。通過獲取這一個數字塊,計數器從0遞增到10.因此,下一個獲取塊的INSERT語句將得到範圍從10到19的數字。