パブリケーション定義で WHERE 句の指定がないと、パブリケーション内で変更されたすべてのローがアップロードされます。パブリケーション内のアーティクルに WHERE 句を追加することで、変更されたローのうち WHERE 句の探索条件に一致するローのみをアップロードするよう制限できます。
WHERE 句内の探索条件では、アーティクルに含まれるカラムだけを参照できます。また、WHERE 句では次のいずれも使用できません。
サブクエリ
変数
非決定的関数
これらの条件は強制ではありませんが、従わなかった場合、予期しない結果が発生します。WHERE 句に関連するエラーは、パブリケーションの定義時ではなく、その WHERE 句で参照されたテーブルに対して DML が実行されたときに発生します。
SQL Anywhere プラグインを使用して、DBA 権限のあるユーザとしてリモート・データベースに接続します。
[パブリケーション] フォルダを開きます。
[ファイル] - [新規] - [パブリケーション] を選択します。
[新しいパブリケーションの名前を指定してください。] フィールドに、新しいパブリケーションの名前を入力します。[次へ] をクリックします。
[次へ] をクリックします。
[使用可能なテーブル] リストでテーブルを選択します。[追加] をクリックします。
[次へ] をクリックします。
[次へ] をクリックします。
[アーティクル] リストでテーブルを選択し、[選択したアーティクルには次の WHERE 句があります] ウィンドウ枠で探索条件を入力します。
[完了] をクリックします。
DBA 権限のあるユーザとしてリモート・データベースに接続します。
パブリケーション対象のテーブルと WHERE 条件を含む CREATE PUBLICATION 文を実行します。
次の例は、Employees テーブル全体を含み、SalesOrders テーブルの中でアーカイブ済みとしてマーク付けされていないすべてのローを含むパブリケーションを作成します。
CREATE PUBLICATION main_publication ( TABLE Employees, TABLE SalesOrders WHERE archived = 'N' ); |
テーブル内の archived カラムを N 以外の値から N に変更すると、次回の同期中に Mobile Link サーバに delete が送信されます。逆に、archived カラムを N から N 以外の値に変更すると、insert が送信されます。archived カラムに対する更新は、Mobile Link サーバに送信されません。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |