Wartości w polu Autonumer przyrastają cyklicznie, to znaczy tak:
ID(Autonumer)
1
2
...
2147483646
2147483647
-2147483648
-2147483647
-2147483646
...
-3
-2
-1
0
1
2
... i tak w kółko. A zatem przypomina
to podroż po obwodzie koła, która nigdy się nie kończy. Jedyne, co może
się nam przytrafić, to naruszenie unikalności tego pola, bo zwykle zakładany
tam indeks bez powtórzeń. Jednak w normalnej pracy to chyba tylko
teoretyczna możliwość.
U w a g a: Należy zauważyć, że po liczbie 2147483647, następną w kolejności jest -2147483648. Taaaki skok na drugi koniec zakresu liczb typu Long może wydać się dziwny, ale tylko do czasu, gdy uświadomimy sobie, że to tylko interpretacja dziesiętna kolejnych wartości binarnych. W notacji szesnastkowej już nie ma wątpliwości, że 'wewnętrznie' te liczby różnią się o 1 (jeden). Poniżej zamieściłem te same wartości, właśnie w notacji szesnastkowej:
ID(Autonumer)
00000001
00000002
...
7FFFFFFE
7FFFFFFF
80000000
80000001
80000002
...
FFFFFFFD
FFFFFFFE
FFFFFFFF 'dopiero tutaj następuje zamknięcie cyklu
00000000 'i przeskok z samych jedynek na same zera.
00000001
00000002
... i tak w kółko. Płynie z tego
pewien dość przydatny wniosek: Dla pola typu Autonumer, najmniejszą
wartością jest 0 (zero), a największą -1 (minus jeden). To spostrzeżenie
wykorzystuje się do zerowania Autonumeru bez konieczności defragmentacji
bazy, opisane w dziale Anti-FAQ: Tabele (pkt. 6). Wystarczy za pomocą kwerendy
INSERT INTO... wpisać do pola ID liczbę -1, żeby Access dał się
'oszukać' i zwiększył licznik do maksymalnej wg siebie wartości
(szesnastkowo FFFFFFFF). I tak cykl się zamyka - znowu możemy liczyć od
początku.
K. P.