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

 

end_upload (Tabellenereignis)

Verarbeitet Anweisungen im Zusammenhang mit einer angegebenen Tabelle, unmittelbar nachdem der MobiLink-Server die Verarbeitung des Upload-Datenstroms der Einfügungen, Aktualisierungen und Löschungen abgeschlossen hat.

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.

Parameter

Beschreibung

Reihenfolge

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

1

s.table

VARCHAR(128). Der Tabellenname

2

Standardaktion

Keine.

Bemerkungen

Der MobiLink-Server führt dieses Skript als letzten Schritt bei der Verarbeitung von Upload-Daten aus. Upload-Daten werden in einer separaten Transaktion abgearbeitet. Die Ausführung dieses Skripts ist die letzte tabellenspezifische Aktion in dieser Transaktion.

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

Siehe auch
SQL-Beispiel

Der folgende Aufruf einer MobiLink-Systemprozedur weist das Ereignis end_upload der gespeicherten Prozedut ULCustomerIDPool_maintain zu.

CALL ml_add_table_script(
   'custdb',
   'ULCustomerIDPool',
   'end_upload', 
   'CALL ULCustomerIDPool_maintain( username );' );

Die folgenden SQL-Anweisungen erstellen die gespeicherte Prozedur ULCustomerIDPool_maintain.

CREATE OR REPLACE PROCEDURE ULCustomerIDPool_maintain(
  SyncUserID IN integer )
AS
  pool_count INTEGER;
  pool_max   INTEGER;
BEGIN
  -- Determine how many ids to add to the pool
  SELECT COUNT(*)
    INTO pool_count
    FROM ULCustomerIDPool
    WHERE pool_emp_id = SyncUserID;
  -- Determine the current Customer id max
  SELECT MAX(pool_cust_id)
    INTO pool_max
    FROM ULCustomerIDPool;
  -- Top up the pool with new ids
  WHILE pool_count < 20 LOOP
    pool_max := pool_max + 1;
      INSERT INTO ULCustomerIDPool(
          pool_cust_id, pool_emp_id )
            VALUES ( pool_max, SyncUserID );
      pool_count := pool_count + 1;
  END LOOP;
END;
Java-Beispiel

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

CALL ml_add_java_table_script(
   'ver1',
   'table1'
   'end_upload',
   'ExamplePackage.ExampleClass.endUploadTable' )

Im Folgenden sehen Sie die Java-Beispielmethode endUploadTable. Sie erzeugt eine Löschung für eine Tabelle mit einem Namen, der dem Namen der übergebenden Tabelle ähnlich ist. Diese Syntax gilt für konsolidierte SQL Anywhere-Datenbanken.

public String endUploadTable(
  String user,
  String table ) {
  return( "DELETE from '" + table + "_temp'" ); 
}
.NET-Beispiel

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

CALL ml_add_dnet_table_script(
   'ver1',
   'table1',
   'end_upload',
   'TestScripts.Test.EndUpload'
)

Das folgende .NET-Beispiel verschiebt Zeilen, die in eine temporäre Tabelle eingefügt wurden, und zwar in die Tabelle, die dem Skript übergeben wird.

public string EndUpload( string user, string table ) {
  DBCommand stmt = curConn.CreateCommand();
  // Move the uploaded rows to the destination table.
  stmt.CommandText = "INSERT INTO "
    + table
    + " SELECT * FROM dnet_ul_temp";
  stmt.ExecuteNonQuery();
  stmt.Close();
  return ( null );
}