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

SQL Anywhere 12.0.1 (Deutsch) » MobiLink - Serveradministration » MobiLink-Servertechnologie » Synchronisationsmethoden » Konfliktverarbeitung » Konfliktlösung

 

Konfliktlösung mit upload_update-Skripten

Anstelle des Skripts resolve_conflict können Sie im upload_update-Skript eine gespeicherte Prozedur für die Konfliktlösung verwenden. Bei dieser Methode müssen Sie Konflikte programmtechnisch erkennen und lösen.

Die gespeicherte Prozedur muss alle Spalten annehmen, einschließlich der neuen (Post-Image) und alten (Pre-Image) Werte.

Das upload_update-Skript kann wie folgt aussehen:

{CALL UpdateProduct(
   {ml o.id}, {ml o.name}, {ml o.desc}, {ml r.name}, {ml r.desc}
)
}

Die gespeicherte Prozedur UpdateProduct kann wie folgt aussehen:



CREATE PROCEDURE UpdateProduct( 
  @id INTEGER,
  @preName VARCHAR(20), 
  @preDesc VARCHAR(200),
  @postName VARCHAR(20), 
  @postDesc VARCHAR(200) ) 
BEGIN
    UPDATE product
     SET name = @postName, description = @postDesc
     WHERE id = @id
       AND name = @preName
       AND description = @preDesc
    IF @@rowcount=0 THEN
        // A conflict occurred: handle resolution here.
    END IF
END

Diese Methode ist häufig einfacher zu verwalten als das Lösen von Konflikten mit resolve_conflict-Skripten, da nur ein Skript gepflegt und verwaltet werden muss und die gesamte Programmlogik in einer gespeicherten Prozedur enthalten ist. Der Code der gespeicherten Prozedur kann jedoch komplizierter sein, wenn die Tabellenspalten NULL oder BLOBs/CLOBs enthalten. Zudem gibt es bei einigen RDBMS, die von konsolidierten MobiLink-Datenbanken unterstützt werden, Einschränkungen bezüglich der Größe der Werte, die an gespeicherte Prozeduren übergeben werden können.

 Siehe auch
 Beispiel