none
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

    Samstag, 9. Oktober 2010 22:25

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
    Samstag, 9. Oktober 2010 23:33
    Moderator

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
    Samstag, 9. Oktober 2010 23:33
    Moderator
  • Vielen Dank,

    für die helfenden Antworten.

    Liebe Grüße

    Sebastian

    Sonntag, 10. Oktober 2010 22:02
  • Hallo Peter
     
    "Peter Doering" <=?utf-8?B?UGV0ZXIgRG9lcmluZw==?=> wrote in message
    news:ba633acb-0ab0-42fe-b564-c36815d60875...
    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.
     
    Falls jemand allerdings dem Autowert nicht traut, gibt es ja immer noch die
    GUID, statt des Autowertes. Die braucht dann mehr platz und ist per
    definition garantiert eindeutig, weltweit, universel.
     
    Gruss
    Henry
     
     
    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com
     
     

    [MVP Office Access]
    Montag, 11. Oktober 2010 11:27
  • 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

    Montag, 11. Oktober 2010 13:31
    Moderator
  • 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
    Dienstag, 12. Oktober 2010 11:04
  • 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

    Dienstag, 12. Oktober 2010 11:18
    Moderator
  • 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 ;-)
     
    Gruss
    Henry
     
     

    [MVP Office Access]
    Mittwoch, 13. Oktober 2010 10:10