Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » Mobile Link - サーバ管理 » Mobile Link イベント » 同期イベント

 

modify_next_last_download_timestamp 接続イベント

このスクリプトを使用して、次回の同期の最終ダウンロード時刻を修正できます。

パラメータ

次の表の説明では、SQL データ型を示します。Java または .NET でスクリプトを作成する場合、適切なデータ型を使用してください。SQL データ型と Java データ型SQL データ型と .NET データ型を参照してください。

SQL スクリプトでは、名前または疑問符を使用してイベント・パラメータを指定できますが、スクリプト内に名前と疑問符を混在させることはできません。疑問符を使用する場合、パラメータは以下に示す順に指定する必要があり、後続のパラメータが指定されていない場合のみ省略可能です (たとえば、パラメータ 2 を使用する場合は、パラメータ 1 を使用してください)。名前付きパラメータを使用する場合は、パラメータの任意のサブセットを任意の順に指定できます。

SQL スクリプトのパラメータ名

説明

順序

s.next_last_download

TIMESTAMP。これは INOUT パラメータです。Mobile Link サーバは、アップロードがコミットされた直後にこの値を生成します。

1

s.last_download

TIMESTAMP。これは IN パラメータです。これは現在の同期の最終ダウンロード時刻です。next_last_download タイムスタンプを last_download タイムスタンプよりも前の時間に修正していないことを確認すると、重複を避けるのに役立ちます。

2

s.remote_id VARCHAR(128)。Mobile Link リモート ID。名前付きパラメータを使用している場合のみ、リモート ID を参照できます。 適用不可

s.username

VARCHAR(128)。Mobile Link ユーザ名。

3

デフォルトのアクション

なし

備考

このスクリプトを使用すると、next_last_download タイムスタンプを変更でき、次回の同期の last_download スタンプが効率的に変更されます。これにより、現在の同期に影響を与えずに次回の同期をリセットできます。

modify_next_last_download_timestamp イベントの SQL スクリプトは、ストアド・プロシージャとして実装してください。Mobile Link サーバは、ストアド・プロシージャへの最初のパラメータとして next_last_download タイムスタンプ を渡し、タイムスタンプをストアド・プロシージャが渡した最初の値で置き換えます。

このスクリプトは、ユーザ・テーブルがダウンロードされた後にダウンロード・トランザクションで実行されます。

参照
SQL の例

次の例は、このスクリプトの適用例の 1 つを示します。ストアド・プロシージャを作成します。次は SQL Anywhere 統合データベース用の構文です。

CREATE PROCEDURE ModifyNextDownloadTimestamp(
  inout download_timestamp TIMESTAMP ,
  in last_download TIMESTAMP ,
  in user_name VARCHAR(128) )
  BEGIN
    SELECT dateadd(hour, -1, download_timestamp )
    INTO download_timestamp
END

スクリプトを SQL Anywhere 統合データベースにインストールします。

CALL ml_add_connection_script(
  'modify_ts_test',
  'modify_next_last_download_timestamp',
  'CALL  ModifyNextDownloadTimestamp ( 
   {ml s.next_last_download}, 
   {ml s.last_download}, 
   {ml s.username} )' )
Java の例

次の Mobile Link システム・プロシージャ・コールは、スクリプト・バージョン ver1 を同期するときに、modifyNextDownloadTimestamp という Java メソッドを modify_next_last_download_timestamp 接続イベント用のスクリプトとして登録します。

CALL ml_add_java_connection_script(
   'ver1',
   'modify_next_last_download_timestamp',
   'ExamplePackage.ExampleClass.modifyNextDownloadTimestamp' )

次に示すのは、サンプルの Java メソッド modifyNextDownloadTimestamp です。このメソッドは、ダウンロード・タイムスタンプを 1 時間前に設定します。

public String modifyNextDownloadTimestamp(
  Timestamp downloadTimestamp,
  Timestamp lastDownload,
  String userName ) {
  downloadTimestamp.setHours(
  downloadTimestamp.getHours() -1 );
  return( null ); 
}
.NET の例

次の Mobile Link システム・プロシージャ・コールは、スクリプト・バージョン ver1 を同期するときに、ModifyNextDownloadTimestamp という .NET メソッドを modify_next_last_download_timestamp 接続イベント用のスクリプトとして登録します。

CALL ml_add_dnet_connection_script(
   'ver1',
   'modify_next_last_download_timestamp',
   'TestScripts.Test.ModifyNextDownloadTimestamp' )

次に示すのは、サンプルの .NET メソッド ModifyNextDownloadTimestamp です。このメソッドは、ダウンロード・タイムスタンプを 1 時間前に設定します。

public string ModifyNextDownloadTimestamp (
  DateTime download_timestamp,
  DateTime last_download,
  string user_name ) {
  download_timestamp = download_timestamp.AddHours( -1 );
  return ( null );
}