Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Remote » SQL Remote-Systeme erstellen » Aktualisierungskonflikte » Benutzerdefinierte Konfliktlösung mit Trigger

 

Lösung von Inventory-Konflikten

Nehmen wir als Beispiel das Lagerhaussystem eines Produzenten für Sportartikel. Es gibt eine Tabelle mit Produktinformationen, in der eine Quantity-Spalte die Anzahl der einzelnen Produkte auf Lager enthält. Eine Aktualisierung in dieser Spalte würde typischerweise die Menge an Lagergütern verringern oder sie im Falle einer frischen Lieferung erhöhen.

Ein Handelsvertreter, der mit einer entfernten Datenbank arbeitet, gibt eine Bestellung ein, wodurch der Bestand an bestimmten T-Shirts von 28 auf 23, also um fünf, verringert wird. Bevor diese Aktualisierung an die konsolidierte Datenbank repliziert wird, erhält ein anderer Handelsvertreter 40 T-Shirts retourniert. Dieser Handelsvertreter gibt diese Rückgabe in seine entfernte Datenbank ein und repliziert die Änderungen an die konsolidierte Datenbank im Lagerhaus, wodurch 40 der Quantity-Spalte hinzugefügt werden, was 68 ergibt.

Die erste Aktualisierung fügt der Quantity-Spalte 40 hinzu.

Der Lagerhaus-Eintrag wird der Datenbank hinzugefügt. Die Quantity-Spalte zeigt, dass es nun 68 T-Shirts auf Lager gibt. Wenn die Aktualisierung des ersten Handelsvertreters eintrifft, entsteht ein Konflikt: SQL Anywhere erkennt, dass die Aktualisierung von 28 auf 23 lautet, der aktuelle Wert der Spalte jedoch 68 beträgt.

Standardmäßig setzt sich die aktuellere Aktualisierung durch, sodass die Inventargröße fälschlicherweise auf 23 gesetzt wird.

Nicht korrekte Konfliktlösung: Die zweite Aktualisierung überschreibt fälschlicherweise die erste Aktualisierung.

In diesem Fall sollte der Konflikt durch das Zusammenzählen der Änderungen in der Inventarspalte gelöst werden, um das Endergebnis zu berechnen, damit der endgültige Wert von 63 in die Datenbank eingetragen wird.

Korrekte Konfliktlösung: Die zweite Aktualisierung ändert die erste Aktualisierung.
 Die Lösung implementieren