Benutzer mit den meisten Antworten
Ein paar Fragen zum Datentyp AUTOWERT in Access 2007/2010

Frage
-
Hallo,
mich würden ein paar Dinge zum Datentyp oder besser der Funktion "Autowert" interessieren:
1. Was würde passieren, wenn in einer Tabelle der Autowert überläuft?
2. Wird beim Datentyp Autowert jemals der Wert 0 generiert?
3. Werden durch das Löschen von Datensätzen wieder freie Werte von der Funktion AUTOWERT erneut vergeben?
Liebe Grüße
Sebastian
Antworten
-
Hallo,
sebgr123 wrote:
1. Was würde passieren, wenn in einer Tabelle der Autowert überläuft?
Er laeuft nicht ueber.
Wenn der Maximalwert von 2,147,483,647 erreicht ist, wird der Wert negativ
weitergezaehlt, also -2,147,483,648, -2,147,483,647, ... -1, 0, 1 usw.
Sollten die ersten Eintraege noch existieren, gibt es 2 Moeglichkeiten:
- Autowert hat eindeutigen Index: Schluesselverletzung.
- Autowert hat keinen eindeutigen Index: doppelte Autowerte.Allerdings trifft das im Normalfall eher selten ein. Vorher duerfte die
max. DB-Groesse von 2 GB erreicht werden.2. Wird beim Datentyp Autowert jemals der Wert 0 generiert?
s.o.
3. Werden durch das Löschen von Datensätzen wieder freie Werte von der
Funktion AUTOWERT erneut vergeben?Siehe www.donkarl.com?FAQ3.2 Autowert zurücksetzen
Gruss - Peter
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com- Als Antwort markiert sebgr123 Sonntag, 10. Oktober 2010 22:02
Alle Antworten
-
Hallo,
sebgr123 wrote:
1. Was würde passieren, wenn in einer Tabelle der Autowert überläuft?
Er laeuft nicht ueber.
Wenn der Maximalwert von 2,147,483,647 erreicht ist, wird der Wert negativ
weitergezaehlt, also -2,147,483,648, -2,147,483,647, ... -1, 0, 1 usw.
Sollten die ersten Eintraege noch existieren, gibt es 2 Moeglichkeiten:
- Autowert hat eindeutigen Index: Schluesselverletzung.
- Autowert hat keinen eindeutigen Index: doppelte Autowerte.Allerdings trifft das im Normalfall eher selten ein. Vorher duerfte die
max. DB-Groesse von 2 GB erreicht werden.2. Wird beim Datentyp Autowert jemals der Wert 0 generiert?
s.o.
3. Werden durch das Löschen von Datensätzen wieder freie Werte von der
Funktion AUTOWERT erneut vergeben?Siehe www.donkarl.com?FAQ3.2 Autowert zurücksetzen
Gruss - Peter
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com- Als Antwort markiert sebgr123 Sonntag, 10. Oktober 2010 22:02
-
Hallo Peter"Peter Doering" <=?utf-8?B?UGV0ZXIgRG9lcmluZw==?=> wrote in messagenews:ba633acb-0ab0-42fe-b564-c36815d60875...Allerdings trifft das im Normalfall eher selten ein. Vorher duerfte diemax. DB-Groesse von 2 GB erreicht werden.Wie wahr:-) Von der Seite habe ich mir das gar noch nie überlegt. Diemaximal möglichen 4'294'967'296 Werte, die ein Autowert annehmen kann, ineiner MDB abzuspeichern w��rde alleine schon 8GBytes ergeben (2 Byte jeLong). Kommt hinzu, dass da drüber dann in der Regel noch ein Index liegt(nochmals so ca. 8GBytes) und dann hat's vielleicht noch das eine oderandere Feld in der Tabelle. Mit 2 GByte ist die Wahrscheinlichkeit sehrgering, dass alle Autowerte aufgebraucht werden, es sei denn, man erzeugtextrem viele Lücken.Falls jemand allerdings dem Autowert nicht traut, gibt es ja immer noch dieGUID, statt des Autowertes. Die braucht dann mehr platz und ist perdefinition garantiert eindeutig, weltweit, universel.GrussHenryMitglied im http://www.dbdev.orgFAQ: http://www.donkarl.com
[MVP Office Access] -
Hallo Henry,
Henry Habermacher wrote:
"Peter Doering" ...
Allerdings trifft das im Normalfall eher selten ein. Vorher duerfte die
max. DB-Groesse von 2 GB erreicht werden.
Wie wahr:-) Von der Seite habe ich mir das gar noch nie überlegt. Die maximal möglichen 4'294'967'296 Werte, die ein Autowert annehmen kann, in einer MDB abzuspeichern w��rde alleine schon 8GBytes ergeben (2 Byte je Long). Kommt hinzu, dass da drüber dann in der Regel noch ein Index liegt (nochmals so ca. 8GBytes) und dann hat's vielleicht noch das eine oder andere Feld in der Tabelle. Mit 2 GByte ist die Wahrscheinlichkeit sehr gering, dass alle Autowerte aufgebraucht werden, es sei denn, man erzeugt extrem viele Lücken.Das Szenario ist in der Realitaet sehr unwahrscheinlich aber nicht
ausgeschlossen. Angenommen, es handelt sich um eine Temp-Tabelle, in der
viele DS landen, aber nach kurzem wieder entsorgt werden. Zwischendurch
wird die DB immer wieder mal komprimiert, aber weil beim Komprimieren die
zuletzt eingefuegten DS noch da sind, wird der Autowert nicht
zurueckgesetzt. Und schon ist es eine Frage der Zeit, bis der Autowert
rundlaeuft. ;-)Gruss - Peter
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com -
Hi,
Hallo Henry,
Henry Habermacher wrote:"Peter Doering" ...
Allerdings trifft das im Normalfall eher selten ein. Vorher duerfte
die max. DB-Groesse von 2 GB erreicht werden.Wie wahr:-) Von der Seite habe ich mir das gar noch nie überlegt.
Die maximal möglichen 4'294'967'296 Werte, die ein Autowert annehmen
kann, in einer MDB abzuspeichern w��rde alleine schon 8GBytes
ergeben (2 Byte je Long). Kommt hinzu, dass da drüber dann in der
Regel noch ein Index liegt (nochmals so ca. 8GBytes) und dann hat's
vielleicht noch das eine oder andere Feld in der Tabelle. Mit 2
GByte ist die Wahrscheinlichkeit sehr gering, dass alle Autowerte
aufgebraucht werden, es sei denn, man erzeugt extrem viele Lücken.Das Szenario ist in der Realitaet sehr unwahrscheinlich aber nicht
ausgeschlossen. Angenommen, es handelt sich um eine Temp-Tabelle, in
der viele DS landen, aber nach kurzem wieder entsorgt werden.
Zwischendurch wird die DB immer wieder mal komprimiert, aber weil
beim Komprimieren die zuletzt eingefuegten DS noch da sind, wird der
Autowert nicht zurueckgesetzt. Und schon ist es eine Frage der Zeit,
bis der Autowert rundlaeuft. ;-)Und dann gibt es schließlich noch die Möglichkeit, für den Autowert einen eigenen Seed größer als 1 einzustellen - z.B. COUNTER(1,1000). Dann ist schneller "übergelaufen". ;-)
Ciao, Sascha
Sascha Trowitzsch -
Hallo Sascha,
Sascha Trowitzsch [MVP] wrote:
"Peter Doering" ...
Das Szenario ist in der Realitaet sehr unwahrscheinlich aber nicht
ausgeschlossen. Angenommen, es handelt sich um eine Temp-Tabelle, in
der viele DS landen, aber nach kurzem wieder entsorgt werden.
Zwischendurch wird die DB immer wieder mal komprimiert, aber weil
beim Komprimieren die zuletzt eingefuegten DS noch da sind, wird der
Autowert nicht zurueckgesetzt. Und schon ist es eine Frage der Zeit,
bis der Autowert rundlaeuft. ;-)Und dann gibt es schließlich noch die Möglichkeit, für den Autowert
einen eigenen Seed größer als 1 einzustellen - z.B. COUNTER(1,1000).
Dann ist schneller "übergelaufen". ;-)Oder man stellt den Autowert von Increment auf Random, dann ist eine
Vorhersage so ziemlich unmoeglich. ;-)Gruss - Peter
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com -
Hallo Sacha> Und dann gibt es schließlich noch die Möglichkeit, für den Autowert einen> eigenen Seed> größer als 1 einzustellen - z.B. COUNTER(1,1000). Dann ist schneller> "übergelaufen". ;-)Dann solltest Du aber einen Seed in der Potenz von 2 nehmen, z.B. 1024,sonst geht's einfach im negativen Bereich weiter, ohne dass es zu"Kollisionen" kommt ;-)GrussHenry
[MVP Office Access]