*Markus: Wie mit INSERT in mehrere Tabellen gleichzeitig umgehen?

Beitrag lesen

Hallo,

ich habe folgenden Teil eines Datenmodells:

Füge ich nun eine neue Person mit Adresse, Kundenart, Kundennummer und Erreichbarkeit ein, müsste ich so vorgehen:

*) Zuerst die Personendaten einfuegen
*) Dann den Zaehlerwert von Person holen und zwischenspeichern
*) Jetzt die Erreichbarkeitsdaten in der Erreichbarkeitstabelle speichern
*) Dann die ID der Erreichbarkeit auslesen um nachher eine Verknüpfung mit Kunde herstellen zu können
*) Dann die Adressedaten einfügen
*) Dann den Adresszaehler holen und in einer Variable zwischenspeichern
*) Jetzt eine neue Kundennummer erzeugen (In der K-Nummerntabelle einen Wert einfügen, damit die Kundennummer hochzählt)
*) Danach diese Kundennummer auslesne und zwischenspeichern
*) Zu guter letzt alle Nummern und die restl. Daten in "Kunde" einfügen um eine Beziehung zu allen Tabellen herzustellen zu können

Es funktioniert so zwar wunderbar, aber ich kann mir nicht vorstellen, dass man in der Praxis so vorgeht. Vor allem könnte es zwar ziemlich unwahrscheinlich, aber theoretisch doch möglich sein, dass gleichzeitig zwei Clients zur gleichen Zeit auf den Server zugreifen und zwei neue Personen mit gleichem Geburtsdatum und Namen eingefügt werden. Und durch die Tatsache, dass es mehrere INSERT-Anweisungen sind, zwischen denen ja eine gewisse Pause ist, könnten die Personen-IDs durcheinander gebracht werden wodurch die Adresse1, die zu Person Max Mustermann1 gehört, plötzlich dem Max Mustermann2 zugewiesen wird, da in der Zwischenzeit der Zähler wieder um eins weitegezählt hat.

Durch diesen Sachverhalt stellt sich mir die Frage, wie man derartige INSERTs vielleicht anders lösen könnte. Ein mehrfaches INSERT in mehrere Tabellen gibt es ja nicht (ähnlich wie ein SELECT mit JOINs). Wie würde man da also praxisbezogen vorgehen?

Markus