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

SQL Anywhere 12.0.1 » Mobile Link クライアント管理 » Mobile Link 用 SQL Anywhere クライアント » SQL Anywhere クライアントのイベントフック » イベントフックプロシージャー

 

#hook_dict テーブル

フックが呼び出される直前に、dbmlsync は次の CREATE 文を使用してリモートデータベースに #hook_dict テーブルを作成します。テーブル名の前の # は、そのテーブルがテンポラリであることを意味します。

CREATE TABLE #hook_dict(
name VARCHAR(128) NOT NULL UNIQUE,
value VARCHAR(10240) NOT NULL)

dbmlsync ユーティリティは #hook_dict テーブルを使用してフック関数に値を渡し、フック関数は #hook_dict テーブルを使用して dbmlsync に値を戻します。

各フックは、パラメーター値を受け取ります。パラメーター値の中には、新しい値を返すように変更できるものがあります。それ以外のものは、読み込み専用です。このテーブルの各ローには、1 つのパラメーターの値があります。

たとえば、2 つのサブスクリプションが次のように定義されているとします。

CREATE SYNCHRONIZATION SUBSCRIPTION sub1
TO pub1
FOR  MyUser;
SCRIPT VERSION 'v1'
CREATE SYNCHRONIZATION SUBSCRIPTION sub2
TO pub2
FOR  MyUser;
SCRIPT VERSION 'v1'

sp_hook_dbmlsync_begin フックが、次の dbmlsync コマンドラインに対して呼び出されるとします。

dbmlsync -c 'DSN=MyDsn' -s sub1,sub2

#hook_dict テーブルには、次のローが含まれます。

#hook_dict ロー

subscription_0

sub1

subscription_1

sub2

publication_0

pub1

publication_1

pub2

MobiLink user

MyUser

Script version

v1
注意

publication_n ローは廃止される予定であり、今後のリリースで削除される可能性があります。

フックを使用して、#hook_dict テーブルから値を取り出したり、その動作をカスタマイズしたりできます。たとえば、Mobile Link ユーザーを取り出すには、次のように SELECT 文を使用します。

SELECT value
FROM #hook_dict
WHERE name = 'MobiLink user'

In/out パラメーターは、dbmlsync の動作をフックで修正することによって更新できます。たとえば、次のような文を使用してテーブルの abort synchronization ローを更新することで、同期のアボートを sp_hook_dbmlsync_abort フックから dbmlsync に指示することができます。

UPDATE #hook_dict
SET value='true'
WHERE name='abort synchronization'

各フックの記述には、#hook_dict テーブルのローがリストされます。

 例