Liebe Forumgemeinde,
der Threadtitel ist etwas verwirrend aber hier zu meinem Problem.
Ich habe eine Tabelle in der ich ein Ranking speichern möchte. Dieses Ranking fängt bei 0 an und geht mit fortlaufenden Zahlen weiter nach oben. Nach einigen Inserts könnte die Tabelle folgendermaßen aussehen:
Titel: Ranking:
Eins 0
Zwei 1
Drei 2
Jetzt möchte ich in meiner Applikation (C++) allerdings auch erlauben, dass ein anderes Buch auf den Platz 1 gelangen kann. Dazu würde ich gerne einen Trigger schreiben, der dann dafür sorgt, dass alle Bücher mit einem höheren Ranking um eins erhöht werden. Nach einem Eintrag soll der Trigger also dafür sorgen, dass die Rankingreihenfolge konsistent ist:
Titel: Ranking:
Eins 0
Neues Buch 1
Zwei 2
Drei 3
Für den Insert- und den Delete-Fall (hier müssten Einträge um 1 verringert werden) kann ich mir das schon ganz gut vorstellen aber was passiert bei einem Update?
Nehmen wir im letzten Beispiel an, das Buch mit dem Titel “Drei” würde jetzt auf Ranking ‘0’ gelangen. Hierzu würde meine Applikation ein Update aufrufen. Innerhalb meiner Trigger-Funktion müsste ich wieder ein Update aufrufen, was dann implizit wieder den Update-Trigger auslöst usw. bis ein Stack-Overflow eintritt.
Gibt es generell - ohne mein Beispiel komplett zu berücksichtigen - eine Lösung für so ein Problem.? Oder liege ich mit dem Mechanismus des Triggers hier falsch und es gibt noch eine bessere Möglichkeit das über die DB abzubilden?
Viele Dank für Eure Hilfe,
–Heiko