Firebird - pseudo Index - Update

23/02/2010 - 13:51 von Nicole Wagner | Report spam
Hallo User,


Ich habe eine Tabelle, die in einem Feld aneinander anschliessende,
fortlaufende Laufnummern hat.

ID = 1 Laufnummer = 1
ID = 2 Laufnummer = 2
ID = 3 Laufnummer = 3
ID = 4 Laufnummer = 4

ID = 5 Laufnummer = 1
ID = 6 Laufnummer = 2
ID = 7 Laufnummer = 3
ID = 8 Laufnummer = 4
ID = 9 Laufnummer = 5

Das funktioniert wunderbar, wenn die Daten das erste mal in die Tabelle
geschrieben werden.

Jetzt kann es vorkommen, dass ploetzlich ein Datensatz hereinkommt, der
logisch zwischen ID=4 und ID=5 gehoert. Diese Reihung ergibt sich aus
den anderen Spalten und ist einer der wichtigsten Umstaende der ganzen
Tabelle.

Die Konsquenz dieses "Hineingehoerens" ist, dass die Laufnummern sich
von ID 5 bis ID 9 um eins erhoehen muessen (bzw. jeweils um die der
von der Reihung her eingeschobenen Datansatzanzahl).

Es muss also danach dortstehen
ID = 5 Laufnummer = 2
ID = 6 Laufnummer = 3
ID = 7 Laufnummer = 4
ID = 8 Laufnummer = 5
ID = 9 Laufnummer = 6

ID = 10 Laufnummer = 1

Wie loese ich das am elegantesten (Delphi)?


Hinweis:
Das Schreiben wird ein sehr seltener Zugriff sein, ebenso wie das
Update. Lesen hingegen erfolgt sehr oft.



Danke fuer Tipps,

Nicole
 

Lesen sie die antworten

#1 Marian Aldenhövel
23/02/2010 - 20:45 | Warnen spam
Hi,

Jetzt kann es vorkommen, dass ploetzlich ein Datensatz hereinkommt, der
logisch zwischen ID=4 und ID=5 gehoert. Diese Reihung ergibt sich aus
den anderen Spalten und ist einer der wichtigsten Umstaende der ganzen
Tabelle.



Wenn sie sich aus den anderen Spalten ergibt, dann làsst Du die
Datenbank die Daten sortieren: SELECT .. FROM .. ORDER BY.

Gegebenenfalls Indizes anlegen.

Wenn die Bedingungen zum Sortieren kompliziert sind, dann generiere
daraus einen kombinierten Schlüssel den Du dann zur Sortierung verwenden
kannst.

"fortlaufende Laufnummern" sind einer Datenbank eher unbequem, wenn Du
sie sehen willst, dann generiere sie bei der Ausgabe.

Ciao, MM

Ähnliche fragen