Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
sql - 2 tabellen abgleichen

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
mrvim
Gast





BeitragVerfasst am: 12. Jul 2004 18:09   Titel: sql - 2 tabellen abgleichen

folgende Situation:

es existieren 2 rechner (ein server ein mobiler client).
Es laufen auf beiden eine Datenbank. Der Client wird zunächst
offline benutzt, um daten entgegenzunehmen und in der lokalen
datenbank zu speichern (es existieren mehrere clients).

auf dem server können auch daten eingegeben werden. beide
datenbanken haben die gleiche struktur. einige tabellen sind
untereinander verknüpft und haben automatisch generierte primary
keys.

problem:

wenn ich auf dem client die daten mittels select auslese und via
insert in den server einfüge bekommen die zeilen dort einen anderen
primary key, als sie zunächst auf dem client hatten, somit passen
die verweise nicht mehr von den anderen tabellen, sie zeigen auf
eine falsche zeile oder auf eine nicht existierende.

gibt es einen ansatz für dieses problem, den ich weiterverfolgen
sollte?
 

heinrich



Anmeldungsdatum: 22.09.1999
Beiträge: 219
Wohnort: N49.137 E8.544

BeitragVerfasst am: 13. Jul 2004 8:07   Titel:

Stichwort: Replikation

Um was für eine Datenbanksoftware handelt es sich denn? MySQL, PostgreSQL, Oracle, ...? Zumindest für letztere beiden existieren Replikationslösungen; Bei MySQL bin ich mir nicht ganz sicher.
_________________
It just works.
 
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name

kanonenfutter
Gast





BeitragVerfasst am: 13. Jul 2004 13:38   Titel:

> wenn ich auf dem client die daten mittels select auslese und via insert in den server einfüge
> bekommen die zeilen dort einen anderen primary key, als sie zunächst auf dem client hatten.

hmm, vielleicht klingt das selbstverständlich oder banal, aber:
du musst die zu "kopierenden" daten auf dem server auf die gleiche weise einfügen wie es bei ganz neuen daten der fall ist, die du direkt einfügst (ohne umweg über den client).
bei ganz neuen daten hast du ja auch noch keine keys, sie werden erst beim insert erzeugt. genau so eben auch für die kopierten daten (diese funktionalität hast du ja ohnehin schon implementiert). dabei darfst du die keys aus der client-db nicht verwenden (logisch), sondern sie werden neu angelegt.
hintergrund: die keys sind nur ein hilfsmittel, um die struktur der daten in der db nachzubilden. nach aussen hin dürfen die keys keine "bedeutung" haben, sie sind völlig willkürlich (nur innerhalb der db müssen sie konsistent sein).
daher ist es unsinnig, sie von einer db in eine andere zu übertragen.
 

mrvim
Gast





BeitragVerfasst am: 14. Jul 2004 7:39   Titel: keys

hallol leute,

danke für euer interesse.
meine lösung ist ein "primary key pool". das heisst jeder beteiligte client bekommt einen pool von primary keys. das "auto-increment" für die primary keys wird ausgeschaltet und von mir selbst verwaltet. weiterhin bekommt jede tabelle einen timestamp, den ich als orientierung nehme ob tabellen synchronisiert werden müssen oder nicht.


gruss mrvim
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy