SQLite kleinste ID verwenden

  • Antworten:10
basti38
  • Forum-Beiträge: 45

23.11.2016, 16:34:39 via Website

Hi,

ich habe eine SQLite Datenbank angelegt und dazu einen Button der einzelne Daten löschen kann.
Falls bspw. 5 Einträge in der Datenbank gespeichert sind, also mit der ID 1 bis 5 und ich z.B. Nummer 4 lösche, wird beim Anlegen einer neuen Datei die ID mit der Nummer 6 verwendet und nicht mit der 4.

Kann man das irgendwie ändern, sodass die kleinste unbenutzte ID verwendet wird?

Ich hoffe ihr versteht mein Problem.

Danke im Voraus :)

Antworten
swa00
  • Forum-Beiträge: 3.704

23.11.2016, 16:49:58 via Website

Hallo Basti,

wie hast du denn deine Tabelle angelegt ?
Ich denke mit autoincrement - das wäre dann richtig so

— geändert am 23.11.2016, 16:50:14

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
basti38
  • Forum-Beiträge: 45

23.11.2016, 17:26:25 via Website

Ja genau die ID ist als *COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "* angelegt.

Antworten
swa00
  • Forum-Beiträge: 3.704

23.11.2016, 17:42:08 via Website

Damit hast du die Antwort auf die Frage :-)

(Grundlage MySQL/Sqlite)

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
basti38
  • Forum-Beiträge: 45

23.11.2016, 17:43:58 via Website

Komisch, dass es dann bei mir nicht funktioniert..

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.11.2016, 17:45:03 via Website

Eben, autoincrement verwendet immer die nächst höhere Zahl , auch wenn du diesen löschst, werden die Zahlen nicht ab dem letzen Eintrag fortgeführt.
Autoincrement ist für eine Eindeutige ID gedacht, welche einmal angelegt wird und nur für die Identifizierung in Abfrage etc. benutzt wird.
Was du suchst ist eine passende Sortierung mit aufsteigender ID, und wenn was fehlt soll der neue Eintrag die alte ID haben.
Dafür würde ich aber eine 2. ID Spalte machen und diese dann selber berechnen.

— geändert am 23.11.2016, 17:45:30

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
swa00
  • Forum-Beiträge: 3.704

23.11.2016, 17:47:29 via Website

Was soll bei dir nicht funktionieren ???

Autoincrement bedeutet , dass jeder neu hinzugefügte Datensatz eine eindeutige (hochgezählte) id
bekommt - ergo genau das , was du angibst wird bei der Tabelle gemacht ...

Völlig richtig ....

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
M. Galsterer
  • Forum-Beiträge: 142

23.11.2016, 18:03:31 via Website

Was genau funktionert denn nicht? Versuche mal zu dokumentieren

Was der Mensch nicht weiß, macht ihm Angst.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.11.2016, 18:10:14 via Website

@M. Galsterer: Ich vermute mal, das AutoIncrement etc. passt alles, aber glaube das der TE etwas anderes erwartet als AutoIncrement macht.
Er will nämlich die IDs immer vollständig haben und wenn eine ID bsp. "4" fehlt dann soll diese Zuerst wieder erstellt werden und danahc erst am Ende hochgezählt

LG Pascal //It's not a bug, it's a feature. :) ;)

Gelöschter Account

Antworten
swa00
  • Forum-Beiträge: 3.704

23.11.2016, 18:14:33 via Website

Richtig, er sollte dann ein eigenes Integer anlegen und mit dem Arbeiten.
Ich würde dann die originale _id auch in ruhe lassen, das diese für die _journal als index verwendet wird

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
basti38
  • Forum-Beiträge: 45

23.11.2016, 20:08:56 via Website

Danke für die vielen Antworten. Ich werde das mit dem zweiten Integer-ID-Wert mal ausprobieren :)

Antworten