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-Ereignisse » Synchronisationsereignisse

 

upload_update (Tabellenereignis)

Liefert ein Ereignis, das der MobiLink-Server während der Verarbeitung des Uploads zur Verarbeitung der in der entfernten Datenbank aktualisierten Zeilen verwendet.

Parameter
Parameter Reihenfolge
r.Spalte-1 1
... ...
r.Spalte-M MByte
r.pk-Spalte-1 M + 1
... ...
r.pk-Spalte-N M + N
o.Spalte-N M + N + 1
... ...
o.Spalte-M M + N + M
Standardaktion

Keine.

Bemerkungen

Das anweisungsbasierte Skript upload_update kann Spaltenwerte direkt entsprechend den Angaben in der UPLOAD-Anweisung aktualisieren.

Die WHERE-Klausel muss alle Primärschlüsselspalten enthalten, die synchronisiert werden. Die SET-Klausel muss alle Nicht-Primärschlüsselspalten enthalten, die synchronisiert werden.

Sie verwenden in Ihrer SET-Klausel die gleiche Anzahl von Primärschlüsselspalten wie in der Tabelle, und MobiLink sendet die richtige Anzahl von Spaltenwerten. Auf ähnliche Weise können Sie in der WHERE-Klausel eine beliebige Anzahl von Primärschlüsseln haben, jedoch müssen alle hier angegeben werden, und MobiLink sendet die richtigen Werte. MobiLink sendet diese Spaltenwerte und Primärschlüsselwerte in der Reihenfolge, wie die Spalten oder Primärschlüssel in einem MobiLink-Bericht Ihres Schemas erscheinen. Mit der Option -vh können Sie die Spaltenfolge für dieses Tabellenschema festlegen.

Im folgenden Skript upload_update stehen die Fragezeichen in der richtigen Reihenfolge:

UPDATE MyTable
  SET column_1 = ?, ..., column_M = ?
  WHERE pk_column_1 = ? AND ... AND pk_column_N = ?

Für jede Tabelle in der entfernten Datenbank kann ein upload_update-Skript vorhanden sein.

Für Java- und .NET-Anwendungen muss dieses Skript gültigen SQL-Code zurückgeben.

Um mit dem upload_update-Skript Konflikte festzustellen, müssen Sie alle Nicht-Primärschlüsselspalten in die WHERE-Klausel einbeziehen.

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

In dieser Anweisung sind Spalte1 und Spalte2 Nicht-Primärschlüsselspalten, Ps1 und Ps2 hingegen sind Primärschlüsselspalten. Die an die zweite Gruppe von Nicht-Primärschlüsselspalten übergebenen Werte sind das Pre-Image 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.

Siehe auch
SQL-Beispiel

Mit diesem Beispiel werden Aktualisierungen verarbeitet, die in der Tabelle Customer in der entfernten Datenbank vorgenommen wurden. Mit dem Skript werden die Werte in der Tabelle Customer in der konsolidierten Datenbank aktualisiert.

CALL ml_add_table_script(
  'ver1',
  'table1',
  'upload_update',
'UPDATE Customer 
   SET name = {ml r.name}, rep_id = {ml r.rep_id} 
      WHERE cust_id = {ml o.cust_id}')
Java-Beispiel

Der folgende Aufruf einer MobiLink-Systemprozedur registriert eine Java-Methode namens uploadUpdateTable als das Skript für das Tabellenereignis upload_update, wenn die Skriptversion ver1 synchronisiert wird.

CALL ml_add_java_table_script(
  'ver1',
  'table1',
  'upload_update',
  'ExamplePackage.ExampleClass.uploadUpdateTable' )

Im Folgenden sehen Sie die Java-Beispielmethode uploadUpdateTable. Sie ruft die Methode genUU auf, um dynamisch eine UPLOAD-Anweisung zu generieren.

public String uploadUpdateTable() {
  return( genUU(_curTable) ); 
}
.NET-Beispiel

Der folgende Aufruf einer MobiLink-Systemprozedur registriert eine .NET-Methode namens UploadUpdate als das Skript für das Tabellenereignis upload_update, wenn die Skriptversion ver1 und die Tabelle table1 synchronisiert werden.

CALL ml_add_dnet_table_script(
  'ver1',
  'table1',
  'upload_update',
  'TestScripts.Test.UploadUpdate'
)

Im Folgenden sehen Sie die .NET-Beispielmethode UploadUpdate. Sie ruft die Methode genUU auf, um dynamisch eine UPLOAD-Anweisung zu generieren.

public string UploadUpdate() {
  return ( genUU(_curTable) );
}