Primärschlüssel dürfen in synchronisierten Tabellen nie aktualisiert werden. Durch Aktualisieren von Primärschlüsseln wird ihr Zweck außer Kraft gesetzt, da der Schlüssel die einzige Möglichkeit darstellt, dieselbe Zeile in unterschiedlichen Datenbanken (entfernt und konsolidiert) zu identifizieren und Konflikte zu erkennen.
Konflikte sind nicht dasselbe wie Fehler. Wenn Konflikte auftreten können, sollten Sie einen Prozess definieren, um die korrekten Werte zu ermitteln oder wenigstens den Konflikt zu protokollieren. Die Konfliktverarbeitung ist ein integraler Bestandteil einer sauber geschriebenen Anwendung.
Während der Download-Phase einer Synchronisation kommt es in der entfernten Datenbank nicht zu Konflikten. Wenn eine eingelesene Zeile einen neuen Primärschlüssel enthält, werden die Werte in eine neue Zeile eingefügt. Wenn der Primärschlüssel mit dem einer vorhandenen Zeile übereinstimmt, werden die Werte in der Zeile aktualisiert.
Benutzer1 beginnt mit einem Lager von zehn Artikeln. Er verkauft drei davon und aktualisiert den Wert des Lagers von Remote1 auf sieben Artikel. Benutzer2 verkauft vier Artikel und aktualisiert das Lager von Remote2 auf sechs. Wenn Remote1 synchronisiert, wird die konsolidierte Datenbank auf sieben aktualisiert. Wenn Remote2 synchronisiert, wird ein Konflikt festgestellt, da der Wert des Lagers nicht mehr zehn ist. Um diesen Konflikt programmiertechnisch zu lösen, brauchen Sie drei Zeilenwerte:
Den aktuellen Wert in der konsolidierten Datenbank.
Den neuen Zeilenwert, den Remote2 ausgelesen hat
Den alten Zeilenwert, den Remote2 bei der letzten Synchronisation erhalten hat
In diesem Fall würde die Geschäftslogik folgende Berechnung verwenden, um den neuen Lagerwert zu ermitteln und den Konflikt zu lösen:
current consolidated - (old remote - new remote) -> 7 - (10-6) = 3 |
Weitere Beispiele zum Umgang mit Konflikten finden Sie unter:
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |