Ein Datenskript, das einen Cursor für die Auswahl der Zeilen definiert, die in der entfernten Datenbank gelöscht werden sollen.
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. Siehe SQL-Java-Datentypen und SQL-.NET-Datentypen.
In SQL-Skripten können Sie Ereignisparameter mit ihrem Namen oder mit einem Fragezeichen angeben. Die Verwendung von Fragezeichen ist veraltet und es wird empfohlen, benannte Parameter zu verwenden. Sie können nicht Namen und Fragezeichen in einem Skript mischen. 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 (veraltet für SQL) |
---|---|---|
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 |
Keine.
Der MobiLink-Server öffnet einen schreibgeschützten Cursor, mit dem eine Liste von Zeilen abgerufen wird, die heruntergeladen und aus der entfernten Datenbank gelöscht 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 das download_delete_cursor-Ereignis für die Primärschlüsselspalten für eine oder mehrere Zeilen in einer Tabelle NULL enthält, weist der MobiLink-Server die entfernte Datenbank an, alle Zeilen in der Tabelle zu löschen. Siehe Alle Zeilen in einer Tabelle löschen.
Hinweis: Zeilen, die aus der konsolidierten Datenbank gelöscht wurden, können 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 zu löschender Zeilen zu vermeiden, sollten Sie zeitstempelbasierte Downloads in Betracht ziehen.. Fügen Sie eine Zeile ähnlich der folgenden in die WHERE-Klausel Ihres download_delete_cursor-Skripts ein:
AND last_modified >= {ml s.last_table_download} |
Dieses Skript muss in SQL implementiert werden. Hinweise zur Java- oder .NET-Verarbeitung von Zeilen finden Sie unter Direkte Zeilenbehandlung.
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.
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 )') |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |