In dieser Lektion wird davon ausgegangen, dass Sie bereits alle vorherigen Lektionen abgeschlossen haben. Siehe Lektion 1: Einrichten einer konsolidierten MobiLink-Datenbank.
In dieser Lektion fügen Sie die folgenden Skripten hinzu, um Konflikte zu erkennen und zu lösen:
upload_fetch Sie verwenden dieses Skript für das Abrufen von Zeilen aus einer Tabelle in der konsolidierten Datenbank für die Konflikterkennung.
upload_update Sie verwenden dieses Skript, um festzulegen, wie Daten, die in die entfernte Datenbank eingefügt werden, in der konsolidierten Datenbank übernommen werden. Sie können auch einen erweiterten Prototyp von upload_update für die Ermittlung von Updatekonflikten verwenden. Siehe upload_update (Tabellenereignis).
upload_old_row_insert Mit diesem Skript können Sie alte Zeilenwerte verarbeiten, die von der entfernten Datenbank während der letzten Synchronisation abgerufen wurden. Siehe upload_old_row_insert (Tabellenereignis).
upload_new_row_insert Mit diesem Skript verarbeiten Sie neue Zeilenwerte (die aktualisierten Werte in der entfernten Datenbank). Siehe upload_new_row_insert (Tabellenereignis).
upload_delete Sie verwenden dieses Skript, um Zeilen zu verarbeiten, die aus der entfernten Datenbank gelöscht wurden. Der MobiLink-Server wird konfiguriert, dieses Ereignis für diese praktische Einführung zu ignorieren.
resolve_conflict Das Konfliktlösungsskript wendet Geschäftslogik für die Lösung des Konflikts an. Siehe resolve_conflict (Tabellenereignis).
Installieren Sie die Skripten für die Konflikterkennung und -lösung.
Führen Sie die folgenden SQL-Anweisungen aus:
/* upload_fetch */ CALL ml_add_table_script( 'sync_mlintro_scriptversion', 'Product', 'upload_fetch', 'SELECT name, quantity FROM Product WHERE name = {ml r.name}' ); /* upload_update */ CALL ml_add_table_script( 'sync_mlintro_scriptversion', 'Product', 'upload_update', 'UPDATE Product SET quantity = {ml r.quantity}, last_modified = now() WHERE name = {ml r.name}' ); /* upload_old_row_insert */ CALL ml_add_table_script( 'sync_mlintro_scriptversion', 'Product', 'upload_old_row_insert', 'INSERT INTO Product_old (name,quantity,last_modified) VALUES ({ml r.name}, {ml r.quantity}, now())'); /* upload_new_row_insert */ CALL ml_add_table_script( 'sync_mlintro_scriptversion', 'Product', 'upload_new_row_insert', 'INSERT INTO Product_new (name,quantity,last_modified) VALUES ({ml r.name}, {ml r.quantity}, now())'); /* upload_delete */ CALL ml_add_table_script( 'sync_mlintro_scriptversion', 'Product', 'upload_delete', '--{ml_ignore}'); /* resolve_conflict */ CALL ml_add_table_script( 'sync_mlintro_scriptversion', 'Product', 'resolve_conflict', 'DECLARE @product_name VARCHAR(128); DECLARE @old_rem_val INTEGER; DECLARE @new_rem_val INTEGER; DECLARE @curr_cons_val INTEGER; DECLARE @resolved_value INTEGER; // obtain the product name SELECT name INTO @product_name FROM Product_old; // obtain the old remote value SELECT quantity INTO @old_rem_val FROM Product_old; //obtain the new remote value SELECT quantity INTO @new_rem_val FROM Product_new; // obtain the current value in cons SELECT quantity INTO @curr_cons_val FROM Product WHERE name = @product_name; // determine the resolved value SET @resolved_value = @curr_cons_val- (@old_rem_val - @new_rem_val); // update cons with the resolved value UPDATE Product SET quantity = @resolved_value WHERE name = @product_name; // clear the old and new row tables DELETE FROM Product_new; DELETE FROM Product_old'); COMMIT; |
In dieser praktischen Einführung läuft der MobiLink-Server mit der -zf-Option, die es dem Server ermöglicht, Skripten zu erkennen, die während einer Synchronisation der konsolidierten Datenbank hinzugefügt wurden. Wenn diese Option nicht festgelegt ist, müssen Sie den MobiLink-Server stoppen, bevor Sie der konsolidierten Datenbank Skripten hinzufügen, und dann den Server nach dem Hinzufügen der neuen Skripten wieder starten.
Fortfahren mit Lektion 12: Überprüfen von Konfliktskripten mithilfe des MobiLink-Monitors.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |