このストアド・プロシージャを使用して、スキーマを修正する SQL スクリプトを実行します。
名前 |
値 |
説明 |
---|---|---|
publication_n (in) |
パブリケーション名 |
同期されているパブリケーション (n は整数)。アップロードされるパブリケーションごとに 1 つの publication_n エントリがあります。n の番号は 0 から始まります。 |
MobiLink user (in) |
Mobile Link ユーザ名 |
同期対象となる Mobile Link ユーザ。 |
script version (in) |
スクリプト・バージョンの名前 |
同期に使用されるスクリプト・バージョン。 |
drop hook (out) |
never | always | on success |
次のいずれかの値を取ります。 never - (デフォルト) データベースから sp_hook_dbmlsync_schema_upgrade フックを削除しません。 always - フックの実行を試みた後、データベースから sp_hook_dbmlsync_schema_upgrade フックを削除します。 on success - フックの実行に成功した場合、データベースから sp_hook_dbmlsync_schema_upgrade フックを削除します。dbmlsync の -eh オプションが使用されている場合、または dbmlsync の拡張オプション IgnoreHookErrors が True に設定されている場合、on success は always と同じです。 |
このストアド・プロシージャは、配備されたリモート・データベースでスキーマの変更を行うためのものです。スキーマ更新のためにこのフックを使用すると、スキーマが更新される前にリモート・データベースのすべての変更が同期されます。そうされることによって、データベースの同期が確実に継続されます。このフックが使用中の場合、dbmlsync の拡張オプション LockTables を off に設定しないでください (LockTables はデフォルトでは on です)。
同期中に Mobile Link によってアップロードが正常に適用され、受信確認されると、このフックは sp_hook_dbmlsync_download_end フックの後、sp_hook_dbmlsync_end フックの前に呼び出されます。このフックは、ダウンロード専用の同期中、またはファイル・ベースのダウンロードが作成または適用されるときには呼び出されません。
このフックで実行されるアクションは、フックが完了した直後にコミットされます。
次の例では、sp_hook_dbmlsync_schema_upgrade プロシージャを使用して、リモート・データベース上の Dealer テーブルにカラムを追加します。アップグレードが成功すると、sp_hook_dbmlsync_schema_upgrade フックは削除されます。
CREATE PROCEDURE sp_hook_dbmlsync_schema_upgrade() BEGIN -- Upgrade the schema of the Dealer table. Add a column: ALTER TABLE Dealer ADD dealer_description VARCHAR(128); -- If the schema upgrade is successful, drop this hook: UPDATE #hook_dict SET value = 'on success' WHERE name = 'drop hook'; END; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |