Autoincrement zurücksetzen??

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
jova90
User
Beiträge: 7
Registriert: Mittwoch 12. Februar 2014, 23:03

Hallo,

ich habe eine Datenbank in die ich Datensätze mit einer eindeutigen ID speichere.
Das mache ich mit Autoincrement.

nun ist aber mein Problem das wenn ich einen Datensatz lösche, diese ID nicht neu vergeben wird an den nächsten erzeugten datensatz,
sondern das Autoincrement einfach weiter hochzählt.

gibt es eine möglichkeit dies zu ändern?

Freundliche Grüße
Benutzeravatar
Balmung
User
Beiträge: 44
Registriert: Sonntag 17. März 2013, 18:36

Das ist normal und richtig so.
»Honk Honk«
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

jova90 hat geschrieben:gibt es eine möglichkeit dies zu ändern?
Je nach Datenbanksystem gibt es da in der Tat vielleicht eine Möglichkeit. Ich arbeite allerdings seit über 20 Jahren mit Datenbanken und habe in der Zeit noch nie(!) auch nur ansatzweise die Notwendigkeit dafür gesehen.

Vielleicht ist dein Problem ja ein ganz anderes. Warum glaubst du denn das tun zu müssen?
bb1898
User
Beiträge: 200
Registriert: Mittwoch 12. Juli 2006, 14:28

Balmung hat geschrieben:Das ist normal und richtig so.
Eine kleine Portion Erläuterung kann aber nicht schaden:
Den Wunsch nach einer ununterbrochenen Folge von Primärschlüsseln findet man gar nicht selten, aber so ein Lückenfüllen wäre allerhöchstens dann vertretbar, wenn die Datenbank einen und nur einen Benutzer hat (oder immer nur einen zur gleichen Zeit). Und der muss auch sehr genau wissen, was er da tut (Fremdschlüssel!).
Und so bald die Datenbank ein bisschen größer wird, würde es den Betrieb gewaltig aufhalten, wenn die Folge der vorhandenen Primärschlüssel immer erst auf Lücken geprüft werden müsste, bevor einer vergeben wird.
Ein Rücksetzen einer Autoincrement-Folge auf einen kleineren Wert, also kein Füllen von Lücken, geht bei manchen Datenbanken schon, setzt aber auch voraus, dass nur einer auf die Datenbank zugreift. In einer eigenen und lokalen Datenbanktabelle kann man das evtl. mal machen, wenn man beispielsweise hintereinander eine Menge Murks hineingeschrieben hat, dieser Murks aber noch nicht mit erhaltenswerten Sätzen in anderen Tabellen verknüpft ist. Beispiel, alles, was einen Primärschlüssel oberhalb von 100 hat, war falsch, soll weg, und damit werden keine Relationen zerstört.
Das hat aber in diesem Forum eigentlich nichts zu suchen, es ist Datenbankverwaltung pur.
Antworten