Einzelnen Beitrag anzeigen

Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.099 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Firebird 3.0 in einer SP (Multiuser-Umfeld) ein Wert ändern

  Alt 9. Mai 2022, 09:42
Vielen Dank für die Antworten,

das klingt alles richtig kompliziert.
Eigentlich habe ich nach einer Konstruktion gehofft, die vor dem Update prüfen kann ob der Record, beschreibbar ist. Wenn nicht, selbständig warten bis er beschreibbar ist und fertig. In diesem speziellen Fall ist der einzige Initiator der die ChargenNr schreibt diese eine einzige SP. Das Problem ist nur, diese SP kann von zwei Client gleichzeitig aufgerufen werden und so den deadlock produzieren. In meiner SP mit dem auslesen, upadten, wieder auslesen und vergleichen ist eigentlich alles Mist. Ist nur aus Verzweiflung entstanden.

@Holger: Es sind mehrere tausend Artikel die jeweils eine eigene ChargenNr die NUR fortlaufend ist, haben. Die Tabelle Chargen ist absichtlich 1:1 über den PK und ohne FK des Artikels und beinhaltet NUR die ChargenNr sonst nichts, damit der Record mit der ChargenNr beschrieben werden kann unabhängig vom Artikel möglichst ohne deadlock. Sobald ein Artikel angelegt wird, wird der Record in Chargen angelegt mir ChargenNr = null.
Dein Vorschlag mit der zusätzlichen Tabelle die für jeden Artikel mehrere Chargennummer vorhalten soll habe ich nicht verstanden. Vermutlich passt das auch nicht zu meinem Fall. Leider habe ich das nicht gleich erwähnt und habe dich möglicherweise in die Irre geführt, sorry dafür. Ich dachte so eine "Warten" Konstruktion gibt es, nur ich kenne sie nicht.

Wichtig ist, ich habe keine Möglichkeit im Client irgend etwas zu verändern da es fremde Maschinensteuerungen sind. Ich kann also keine Exception im Client abfangen. Es muss alles in der SP passieren und die SP muss durchlaufen und die nächste gespeicherte ChargenNr ausgeben. Das beste währe gewesen, ich hätte für jeden Artikel einen Generator angelegt. Da es viele tausend Artikel sind wollte ich dafür die Generatoren nicht missbrauchen.

Gruß Kostas
  Mit Zitat antworten Zitat