... beim Speichern schreibt man erst den Kopf, bekommt die ID und speichert alle Positionen mit der eben erhaltenen AuftragsID.
Wozu aber dann aber erst die temporären Tabellen in ClientDatasets? Damit man alles mit einer Transaktion übertragen kann?
Damit die AuftragsID erst dann erzeugt wird, wenn der komplette Auftrag gespeichert wird - also so wie gefordert.
... aber was passiert wenn 2 oder mehr Anwender gleichzeitig neue Aufträge anlegen?
So gleichzeitig, also auf die Millisekunde genau wird das aller Wahrscheinlichkeit nicht passieren. Wichtig ist, daß vor dem Speichern der Positionen in der
DB bereits der entsprechende Auftrag mit seiner eindeutigen Id in der
DB existiert, damit die Foreign-Keys der Positionen-Tabelle nicht ins Nirwana zeigen und somit die Daten-Integrität gewahrt bleibt.
Immer wenn du denkst, das ist unwahrscheinlich, hast du nach spätestens einem Tag die Erkenntnis, dass es doch wahrscheinlich ist.
Und weil dem so ist, haben die Datenbank-System-Hersteller darauf geachtet, dass eine ID
gesichert nur einmal vergeben wird. Darum braucht man sich eben keine Sorgen machen, da kann man auch eine Million Datensätze im exakt gleichen Zeitpunkt in der gleichen Tabelle der gleichen Datenbank erzeugen - aber nicht wundern, dass es etwas dauert, denn der Server verarbeitet diese gleichzeitigen Anfragen nacheinander
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)