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

 

download_delete_cursor (Tabellenereignis)

Definiert einen Cursor, um Zeilen auszuwählen, die in der entfernten Datenbank gelöscht werden sollen.

Parameter

In der folgenden Tabelle stellt die Beschreibung den SQL-Datentyp bereit. Wenn Sie Ihr Skript in Java oder .NET schreiben, müssen Sie den entsprechenden Datentyp benutzen. Weitere Hinweise finden Sie unter SQL-Java-Datentypen und SQL-.NET-Datentypen.

In SQL-Skripten können Sie Ereignisparameter mit ihrem Namen oder mit einem Fragezeichen angeben. Namen und Fragezeichen dürfen jedoch in einem Skript nicht gemischt verwendet werden. Wenn Sie Fragezeichen verwenden, müssen die Parameter in der nachfolgend gezeigten Reihenfolge stehen und sind nur dann optional, wenn keine nachfolgenden Parameter angegeben wurden (z.B. müssen Sie Parameter 1 verwenden, wenn Sie Parameter 2 verwenden möchten). Wenn Sie benannte Parameter verwenden, können Sie beliebige Teilmengen der Parameter in beliebiger Reihenfolge angeben.

Parametername für SQL-Skripten

Beschreibung

Reihenfolge

s.last_table_download

TIMESTAMP. Zeitpunkt des letzten Downloads der Tabelle.

1

s.remote_id VARCHAR(128). Die entfernte ID von MobiLink. Sie können die entfernte ID nur dann referenzieren, wenn Sie benannte Parameter verwenden. Nicht anwendbar

s.username

VARCHAR(128). Der MobiLink-Benutzername

2

Standardaktion

Keine.

Bemerkungen

Der MobiLink-Server öffnet einen schreibgeschützten Cursor, mit dem eine Liste von Zeilen abgerufen wird, die zur entfernten Datenbank übertragen und dort dann eingefügt bzw. aktualisiert werden sollen. Dieses Skript muss eine SELECT-Anweisung enthalten, die die Primärschlüsselwerte der Zeilen enthält, die aus der Tabelle in der entfernten Datenbank gelöscht werden sollen.

Sie können für jede Tabelle in der entfernten Datenbank ein download_delete_cursor-Skript benutzen.

Wenn download_delete_cursor für die Primärschlüsselspalten für eine oder mehrere Zeilen in einer Tabelle NULL enthält, weist MobiLink die entfernte Datenbank an, alle Daten in der Tabelle zu löschen. Weitere Hinweise finden Sie unter Alle Zeilen in einer Tabelle löschen.

Beachten Sie, dass Zeilen, die aus einer entfernten Datenbank gelöscht wurden, nicht in einer Ergebnismenge erscheinen, die von einem download_delete_cursor-Ereignis definiert wurde, und somit nicht automatisch aus der entfernten Datenbank gelöscht werden. Eine Technik zum Kennzeichnen von Zeilen, die aus entfernten Datenbanken gelöscht werden sollen, besteht darin, der Tabelle in der konsolidierten Datenbank eine Spalte hinzuzufügen, die eine Zeile als inaktiv kennzeichnet.

Um den Download unnötiger Zeilen zu vermeiden, sollten Sie die nachfolgende Zeile in die WHERE-Klausel Ihres download_delete_cursor-Skripts aufnehmen:

AND last_modified > '1900/1/1'

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

Die Verwendung von READPAST-Tabellen-Hints in download_delete cursor-Skripten kann zu Problemen führen. Ausführliche Informationen hierzu finden Sie unter dem Ereignis download_cursor.

Siehe auch
SQL-Beispiel

Dieses Beispiel stammt aus dem Beispiel Contact und befindet sich in Samples\MobiLink\Contact\build_consol.sql. Es löscht jeden Kunden aus der entfernten Datenbank, der geändert wurde, nachdem dieser Benutzer den letzten Download durchgeführt hat (Customer.last_modified >= {ml s.last_table_download}) und für den eine der folgenden beiden Aussagen zutrifft.

  • Er gehört nicht zu dem synchronisierenden Benutzer (SalesRep.username != {ml s.username}).

  • Er ist in der konsolidierten Datenbank als inaktiv markiert (Customer.active = 0).

    CALL ml_add_table_script(
     'ver1',
     'table1',
     'download_delete_cursor',
     'SELECT cust_id FROM Customer key join SalesRep
      WHERE Customer.last_modified >= {ml s.last_table_download} AND
       ( SalesRep.username != {ml s.username} OR Customer.active = 0 )')
Java-Beispiel

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

CALL ml_add_java_table_script(
   'ver1',
   'table1',
   'download_delete_cursor',
   'ExamplePackage.ExampleClass.downloadDeleteCursor' )

Im Folgenden sehen Sie die Java-Beispielmethode downloadDeleteCursor. Sie ruft eine Java-Methode auf, die den SQL-Code für den Download-Löschcursor erzeugt.

public String downloadDeleteCursor( 
  Timestamp ts,
  String user ) {
  return( getDownloadCursor( _curUser, _curTable ) ); 
}
.NET-Beispiel

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

CALL ml_add_dnet_table_script(
  'ver1',
  'table1',
  'download_delete_cursor',
  'TestScripts.Test.DownloadDeleteCursor'
)

Im Folgenden sehen Sie die .NET-Beispielmethode DownloadDeleteCursor. Sie ruft eine .NET-Methode auf, die den SQL-Code für den Download-Löschcursor erzeugt.

public string DownloadDeleteCursor(
  DateTime timestamp,
  string user ) {
  return( GetDownloadCursor( _curUser, _curTable ) ); 
}