Oktober 29, 2020, 20:23:54

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Anfügeabfrage bei eindeutigen Index

Begonnen von Xoar, Oktober 17, 2020, 16:11:20

⏪ vorheriges - nächstes ⏩

Xoar

Mahlzeit,

ich habe mal ne Frage an die SQLer,

Es gibt vier Datenbanken, in der per ButtonClick eine Anfügeabfrage gestartet wird, welche alle vorhandenen DS an eine Tabelle in einer Master-Datenbank anfügt.

Dadurch dass jede der vier Datenbanken den gleichen Primärschlüsselwert (in diesem Fall eine 10 stellige Nummer) haben kann, habe ich diesen  Primärschlüssel in der Mastertabelle auf eindeutig gesetzt.

Füge ich mit der zweiten Datenbank die gleichen Primärschlüssel zur Masterdatenbank hinzu, kommt die Meldung, dass aufgrund von Schlüsselverletzungen abgebrochen werden soll, oder fortgeführt.

Klappen tut das natürlich alles, aber wie kann ich das (professioneller) machen?

Die Meldung habe ich umgangen, dadurch dass ich db.execute .... ohne dbfailonerror ausführe, was natürlich ungünstig ist.

Das einzige was mir eingefallen ist, wäre ne verlinkte Tabelle der Masterzieltabelle in die vier slave Datenbanken einzulinken und dann über eine Abfrage nur die neuen DS zu filtern. Aber ist das ne effektive Lösung, oder belass ich es bei den Schlüsselverletzungen, weil es so einfach ist .....

Wieder viel Text geworden, hoffe ist einigermaßen verständlich.

PS:
Die vier Slave Datenbanken haben nur quartalsweise Kontakt zur Masterdatenbank, also nicht permanent.

Grüße


ebs17

Heißt gleicher Schlüssel dann auch gleicher Datensatz mit identischen Inhalten?
Bei getrennten Datenbanken läuft das ganz schnell auseinander, und nachfolgende Verluste und Inkonsistenzen wird man rasch nicht mehr beherrschen.
Ein Synchronisieren von zwei getrennt geführten Datenbanken ist ein Vorgang, den mir noch keiner überzeugend zeigen konnte. Also überprüfe, was Du da vorhast.

Ansonsten ist eine Inkonsistenzprüfung (=> nur neue) über den eindeutigen Index hinaus schon der richtige Weg beim Anfügen. Schlüsselfehler sind für mich auch Fehler und schon deshalb bei Möglichkeit zu vermeiden.
Darüber hinaus ist mir schon ein Fall bekannt geworden, wo bei Nur-Nutzung des eindeutigen Index Autowerte in der Zieltabelle "verbraucht" wurden und zusätzlich die DB erheblich aufgebläht wurde.
Mit freundlichem Glück Auf!

Eberhard

Xoar

Hi, in dem Fall sind es sogar zwei Tabellen 1:n verbunden.

In die 1 Tabelle ist es tatsächlich nur eine Nummer (kein Autowert), hier gibt es also kein Rest des DS.

Die n Seite hat einen zusammen gesetzten eindeutigen Index, aus den Primärschlüssel der 1 Tabelle und einer MitgliederID. Da gibt es dann noch ein weiteres Feld um eine Kategorie zu bestimmen. Die externen Datenbanken haben aber JE für sich nur ihre Mitglieder.

Theoretisch dürfte es also zu keinen Doppelungen in der n Seite kommen. In der 1 Seite jedoch sehr oft.

Also betrifft es ja nur die 1 Seite, aber da gibt es ja nur ein Feld.


Synchronisieren ist in diesem Fall ja nur in eine Richtung, die slave Datenbanken geben Daten nur ab, bekommen selber aber keine Neuen. 

Beim Schließen wird immer komprimiert und repariert, dann sollten Autowert Werte ja wieder bereinigt werden.