EneR: Auto-increment - Frage

Hallo,
ich hab eine allegemeine Frage zu SQL:
Wenn ich eine Auto-increment-Spalte habe, wird wenn eine Spalte gelöscht wird, z.B. mit dem wert 10, und dann eine neue Spalte erzeuge, der Wert 10 später wieder verwendet?

  1. Hallo,
    mal ein Beispiel:
    id   |name
    1    |EneR   -wird gelöscht
    1/2? |EneR2  - ist neu erstellt wird dann die id 1 wieder verwendet?

    1. Hallo,

      id   |name
      1    |EneR   -wird gelöscht
      1/2? |EneR2  - ist neu erstellt wird dann die id 1 wieder verwendet?

      Als ID wird dann 2 verwendet. Außer wenn du mit TRUNCATE den gesamten Inhalt der Tabelle löschst wird wieder bei 1 (bzw. 0) begonnen.

      --
      Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist überzeugt, dass er genug davon habe.
      René Descartes
  2. Hi,

    Wenn ich eine Auto-increment-Spalte habe, wird wenn eine Spalte gelöscht wird, z.B. mit dem wert 10, und dann eine neue Spalte erzeuge, der Wert 10 später wieder verwendet?

    siehe Stahlis Antwort. Auto Increment dient einzig und allein dazu, garantiert eindeutige Werte zu erzeugen - deswegen *darf* ein vorheriger Wert nicht erneut verwendet werden. Dass hierzu übrigens eine fortlaufende Zählung durchgeführt wird, ist eigentlich auch nur Bequemlichkeit: Es ist für den Zweck der einfachste Algorithmus.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hello,

      Wenn ich eine Auto-increment-Spalte habe, wird wenn eine Spalte gelöscht wird, z.B. mit dem wert 10, und dann eine neue Spalte erzeuge, der Wert 10 später wieder verwendet?

      Ich habe erst gedacht, Du hättest Dich vertippt und meintest eigentlich "neue Zeile".

      Aber meinst Du tatsächlich, die Spalte mit dem Autoincrement-Key wird gelöscht und dann später wieder neu angelegt?

      Wenn der Autokey Dein Primärschlüssel war, ist die Integrität der DB wahrscheinlich hin.
      Neu anlegen kannst Du ihn i.d.R. nur für leere Tabellen.
      Die Daten müssen dann durch Insert wieder eingefügt werden.
      Bei einigen DBMS kann man dann aber einen Key vorgeben, der auch akzeptiert wird. Das ist mMn  eigentlich nicht sauber...

      Wenn Du aber meintest, ob er zurückgesetzt wird, wenn Du einige (alle) ZEILEN einer Tabelle löschst, das hängt ab vom DBMS.

      Wie Cheatah schon schrieb, dürfte das bei vernünftigen DBMS auch nicht geschehen, ohne dass die ganze Tabelle gelöscht wird.

      Bei MySQL kannst Du Dir die letzten Werte mit

      show table status;

      anschauen

      Harzliche Grüße vom Berg
      http://bergpost.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

      1. Hallo,

        Ich habe erst gedacht, Du hättest Dich vertippt und meintest eigentlich "neue Zeile".

        Das meinte ich auch *gg* Entschuldig, ich verwechsel die beiden Worte regelmäßig (auch im englischen, was mir in HTML schon das ein oder andere Problem wegen colspan bzw rowspan eingebracht hat!) xD

        Vielen Dank für Eure Antworten!!!