同期の開始時に特定のテーブルに関連する文を処理します。
次の表の説明では、SQL データ型を示します。Java または .NET でスクリプトを作成する場合、適切な対応するデータ型を使用します。 SQL データ型と Java データ型とSQL データ型と .NET データ型を参照してください。
SQL スクリプトでは、名前または疑問符を使用してイベントパラメータを指定できます。疑問符の使用は推奨されなくなりました。名前付きパラメータを使用することをおすすめします。1 つのスクリプト内で名前と疑問符を混在させることはできません。疑問符を使用する場合、パラメータは以下に示す順に指定する必要があり、後続のパラメータが指定されていない場合のみ省略可能です (たとえば、パラメータ 2 を使用する場合は、パラメータ 1 を使用してください)。名前付きパラメータを使用する場合は、パラメータの任意のサブセットを任意の順に指定できます。
SQL スクリプトのパラメータ名 | 説明 | 順序 (SQL では非推奨) |
---|---|---|
s.remote_id | VARCHAR(128)。Mobile Link リモート ID。名前付きパラメータを使用している場合のみ、リモート ID を参照できます。 | 適用外 |
s.username |
VARCHAR(128)。Mobile Link ユーザ名。 |
1 |
s.table |
VARCHAR(128)。テーブル名。 |
2 |
s.new_remote_id | VARCHAR(128)。統合データベースでの新しいリモート ID の場合には、Mobile Link リモート ID。新しいリモート ID でない場合は、値は Null です。 | |
s.new_username | VARCHAR(128)。統合データベースでの新しいユーザ名の場合には、Mobile Link ユーザ名。新しいユーザ名でない場合は、値は Null です。 | |
s.script_version | VARCHAR(128)。Mobile Link サーバが現在の同期に使用しているスクリプトバージョン文字列をこのパラメータに渡すことを指定する、オプションの IN パラメータ。このパラメータの指定に疑問符を使用することはできません。 | 適用外 |
なし。
Mobile Link サーバは、Mobile Link クライアントから同期の開始に必要なすべてを受信してからこのイベントを実行します。
リモートデータベースのテーブルごとに、begin_synchronization スクリプトを 1 つ指定できます。このイベントは、テーブルが同期されている場合にのみ呼び出されます。
begin_synchronization テーブルイベントを使って、特定のテーブルの同期を設定します。次の SQL スクリプトは、同期中にローを保存するためのテンポラリテーブルを作成するスクリプトを登録します。これは SQL Anywhere 統合データベース用の構文です。
CALL ml_add_table_script( 'ver1', 'sales_order', 'begin_synchronization', 'CREATE TABLE #sales_order ( id integer NOT NULL default autoincrement, cust_id integer NOT NULL, order_date date NOT NULL, fin_code_id char(2) NULL, region char(7) NULL, sales_rep integer NOT NULL, PRIMARY KEY (id), )' ) |
次の Mobile Link システムプロシージャコールは、スクリプトバージョン ver1 を同期するときに、beginSynchronizationTable という Java メソッドを begin_synchronization テーブルイベント用のスクリプトとして登録します。
CALL ml_add_java_table_script( 'ver1', 'table1', 'begin_synchronization', 'ExamplePackage.ExampleClass.beginSynchronizationTable' ) |
次に示すのは、サンプルの Java メソッド beginSynchronizationTable です。このメソッドは、このインスタンスに含まれるテーブル名のリストに現在のテーブル名を追加します。
package ExamplePackage; import java.util.ArrayList; import java.sql.Timestamp; class ExampleClass { ArrayList<String> _tableList; String _curTable; public void beginSynchronizationTable( String user, String table ) { _curTable = table; _tableList.add( table ); } public void endTableDownload( Timestamp ts, String user, String table ) { _curTable = null; } } |
次の Mobile Link システムプロシージャコールは、スクリプトバージョン ver1 とテーブル table1 を同期するときに、BeginTableSync という .NET メソッドを begin_synchronization テーブルイベント用のスクリプトとして登録します。
CALL ml_add_dnet_table_script ( 'ver1', 'table1', 'begin_synchronization', 'TestScripts.Test.BeginTableSync' ) |
次に示すのは、サンプルの .NET メソッド BeginTableSync です。このメソッドは、このインスタンスに含まれるテーブル名のリストに現在のテーブル名を追加します。
using System.Collections.Generic; using System; namespace TestScripts { class Test { List<string> _tableList = new List<string>(); string _curTable = ""; public void BeginSynchronizationTable( string user, string table ) { _curTable = table; _tableList.Add( table ); } public void EndTableDownload( DateTime timestamp, string user, string table ) { _curTable = null; } } } |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |