Auto-increment - Frage
EneR
- datenbank
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?
Hallo,
mal ein Beispiel:
id |name
1 |EneR -wird gelöscht
1/2? |EneR2 - ist neu erstellt wird dann die id 1 wieder verwendet?
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.
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
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
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!!!