dynamischen Index aufbauen
Michael Bauer
- datenbank
Hallo Miteinander,
ich möchte in einer MySQL-Tabelle einen dynamischen Index aufbauen.
Wenn ich eine Tabelle mit 25 Datensätzen habe und ich beliebige Menge aus diesen Datensätzen lösche (bsp: 4,16,19,20,9 evtl durch eine Abfrage) soll sich eine Routine in Gang setzen, die in einem Feld jedes Datensatzes eine neue fortlaufende Nummer setzt. Auch beim sortieren, einfügen o. ä. soll ein solcher neuer Index aufgebaut werden.
Pseudocode:
gehe alle Datensätze von oben nach unten durch
lösche den Wert aus "index-field" und setze einen Wert um eins größer als im letzten Feld rein. Beim Beginn natürlich 0 oder 1.
Die Autoincrement-Funktion kann ich nicht nehmen. Diese Nummer ist eindeutig dem Datensatz zugeordnet und bildet die Basis für weitere Verknüpfungen.
Der Index wäre in mancherlei Hinsicht nützlich.
Zum Beispiel bei der Begrenzung der Anzahl von anzeigbaren Datensätzen auf einer Seite.
Danke für Eure Hilfe
Hi,
Wenn ich eine Tabelle mit 25 Datensätzen habe und ich beliebige Menge aus diesen Datensätzen lösche (bsp: 4,16,19,20,9 evtl durch eine Abfrage) soll sich eine Routine in Gang setzen, die in einem Feld jedes Datensatzes eine neue fortlaufende Nummer setzt. Auch beim sortieren, einfügen o. ä. soll ein solcher neuer Index aufgebaut werden.
es ist _nicht_ sinnvoll, eine Datenbank so etwas speichern zu lassen[1]. Diese Werte werden beim Auslesen oder in der nachfolgenden Programmlogik ermittelt.
Pseudocode:
Es steht Dir frei, diesen Pseudocode in Programmlogik umzusetzen, die Du bei Bedarf manuell aufrufst. Die Datenbank wird Dich da nicht unterstützen, denn
[1] aus genau diesem Grund sieht ein DBMS dafür keine Funktion vor.
Der Index wäre in mancherlei Hinsicht nützlich.
In wesentlicher Hinsicht ist er jedoch eine Katastrophe.
Cheatah
Der Index wäre in mancherlei Hinsicht nützlich.
In wesentlicher Hinsicht ist er jedoch eine Katastrophe.
Cheatah
Hi Cheatah, Michael,
und eigentlich ist er weder nötig noch sinnvoll noch eigentlich möglich... mal die Verwendung von Customized-Offline-Recordsets außer Acht gelassen, obwohl das da auch keinen Nutzen bringen würde
Michael, du hast doch bereits einen Index (4,5,6,7) mit jedem Datensatz. Warum brauchst du einen, der bei 0/1 anfängt???
Während des Ablaufens der Datensätze kannst du doch nebenher einen Zaehler mitlaufen lassen x = x+1
Gruß, Frank
Hallo Miteinander,
ich möchte in einer MySQL-Tabelle einen dynamischen Index aufbauen.
Wenn ich eine Tabelle mit 25 Datensätzen habe und ich beliebige Menge aus diesen Datensätzen lösche (bsp: 4,16,19,20,9 evtl durch eine Abfrage) soll sich eine Routine in Gang setzen, die in einem Feld jedes Datensatzes eine neue fortlaufende Nummer setzt. Auch beim sortieren, einfügen o. ä. soll ein solcher neuer Index aufgebaut werden.
Pseudocode:
gehe alle Datensätze von oben nach unten durch
lösche den Wert aus "index-field" und setze einen Wert um eins größer als im letzten Feld rein. Beim Beginn natürlich 0 oder 1.
Die Autoincrement-Funktion kann ich nicht nehmen. Diese Nummer ist eindeutig dem Datensatz zugeordnet und bildet die Basis für weitere Verknüpfungen.
Der Index wäre in mancherlei Hinsicht nützlich.
Zum Beispiel bei der Begrenzung der Anzahl von anzeigbaren Datensätzen auf einer Seite.
Danke für Eure Hilfe
->kommt darauf an, wo es angezeigt werden soll,
die Anzeige der Datensätze wird ja sicherlich nach jedem Löschvorgang neu generiert, d.h. mit pg_numrows (oder so ähnlich, arbeite selber mit postgresql, nicht mit mysql) ermittelst du die anzahl der Datensätze und in der Schleife, die du ja eigentlich haben müsstest um die daten anzuzeigen gibst du einfach das $i mit aus.
weiss nicht ob ich es richtig verstanden habe
in die Datenbank diese Zahlen mit zu übernehmen macht keinen sinn, weil jegliche Abfragen ohne diese auskommen, d.h. wenn du nur eine bestimmte anzahl an datensätzen haben willst, meinentwegen nur von 0-10 wird die DB diese dir auch ausgeben, egal was welche id's dort stehen
hoffe du weisst was ich meine, bin nicht so toll im erklären
gruss romy