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

SQL Anywhere 11.0.1 (Deutsch) » MobiLink - Serveradministration » MobiLink-Servertechnologie verwenden » Synchronisationsmethoden » Konfliktbehandlung » Konflikte erkennen

 

Konflikte mit upload_update-Skripten erkennen

Um mit dem upload_update-Skript Konflikte festzustellen, müssen Sie alle Spalten in die WHERE-Klausel einbeziehen.

UPDATE Tabellenname
SET Spalte1 = {ml r.Spalte1}, Spalte2 = {ml r. Spalte2 } ...
WHERE Ps1 = {ml o.Ps1} AND Ps2 = {ml o.Ps2} ...
   AND Spalte1 = {ml o.Spalte1} AND Spalte2 = {ml o.Spalte2} ...

In dieser Anweisung sind Spalte1, Spalte2 usw. Nicht-Primärschlüsselspalten, wohingegen Ps1, Ps2 usw. Primärschlüsselspalten sind. Die an die zweite Gruppe von Nicht-Primärschlüsselspalten (o.) übergebenen Werte sind das Pre-Image (oder alte Werte) der aktualisierten Zeile. Die WHERE-Klausel vergleicht die alten Werte, die aus der entfernten Datenbank eingelesen wurden, mit den aktuellen Werten in der konsolidierten Datenbank. Wenn die Werte nicht übereinstimmen, wird die Aktualisierung ignoriert, sodass die bereits in der konsolidierten Datenbank enthaltenen Werte erhalten bleiben.

Weitere Hinweise finden Sie unter upload_update (Tabellenereignis).

Das Skript upload_ wird nur dann zur Konflikterkennung verwendet, wenn die Ereignisse upload_fetch oder upload_fetch_column_conflict keinen Konflikt erkannt haben.

Szenario 1

Sie definieren die Skripten für folgende Ereignisse: upload_update, upload_old_row_insert, upload_new_row_insert und resolve_conflict.

Sie definieren das folgende upload_update-Skript:

UPDATE product
SET name={ml r.name}, description={ml r.description}
WHERE id={ml r.id}
   AND name={ml o.name}
   AND description={ml o.description]

MobiLink führt die Aktualisierung durch und prüft dann, wieviele Zeilen geändert wurden. Wurden keine Zeilen geändert, hat MobiLink einen Konflikt erkannt: keine Zeile in der konsolidierten Datenbank entspricht der Pre-Image-Zeile. MobiLink ruft die Skripten upload_old_row_insert und upload_new_row_insert, gefolgt von resolve_conflict, auf.

Weitere Hinweise finden Sie unter Konflikte mit den resolve_conflict-Skripten lösen.

Szenario 2

Sie definieren keine Skripten für die Ereignisse upload_old_row_insert, upload_new_row_insert und resolve_conflict. Stattdessen erstellen Sie eine gespeicherte Prozedur zur Behandlung der Konflikterkennung und Konfliktlösung und rufen sie im Skript upload_update auf.

Weitere Hinweise finden Sie unter Konflikte mit upload_update-Skripten lösen.