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

SQL Anywhere 11.0.1 (日本語) » SQL Remote » SQL Remote のレプリケーション設計 » SQL Remote のレプリケーション設計と設定 » パブリケーションとアーティクル

 

テーブル内の一部のローのみをパブリッシュする

テーブルの一部のローのみが含まれるパブリケーションを作成するには、パブリッシュするローのみに一致する検索条件を記述する必要があります。検索条件で次のいずれかの句を使用します。

  • SUBSCRIBE BY 句   SUBSCRIBE BY 句は、パブリケーションに対する複数のサブスクライバが、テーブルから異なるローを受信する場合に使用します。

    SQL Remote システムで多数のサブスクリプションが必要な場合に、SUBSCRIBE BY 句をおすすめします。SUBSCRIBE BY 句を使用すると、複数のサブスクリプションを単一のパブリケーションに関連付けできます。WHERE 句では、この関連付けができません。サブスクライバが受信するローは、指定された式の値によって異なります。

    SUBSCRIBE BY 句を使用すると、より簡潔で理解しやすいパブリケーションを作成できます。また、WHERE 句を使用した複数のパブリケーションを管理するよりも、優れたパフォーマンスが得られます。

    SUBSCRIBE BY 句を使用して一部のローのみをパブリッシュするを参照してください。

  • WHERE 句   WHERE 句は、アーティクルにローのサブセットを追加する場合に使用します。このアーティクルを含むパブリケーションのすべてのサブスクライバは、WHERE 句を満たすローを受信します。

    パブリッシュ対象外のすべてのローにはデフォルト値を設定しておきます。デフォルト値が設定されていない場合は、リモート・データベースが統合データベースから新しいローを挿入しようとすると、エラーが発生します。

    アーティクルでは WHERE 句を結合できます。

    データベース・サーバは、パブリケーションの数に正比例して、トランザクション・ログに情報を追加し、そのログをスキャンしてメッセージを送信する必要があります。WHERE 句を使用しても、複数のサブスクリプションを単一のパブリケーションに関連付けることはできません。ただし、SUBSCRIBE BY 句では、この関連付けができます。

    WHERE 句を使用して一部のローのみをパブリッシュするを参照してください。

各営業担当者が次の操作を実行できるパブリケーションが必要です。

  • 受注に対してサブスクライブする。

  • 受注をローカルで更新する。

  • 統合データベースに売り上げをレプリケートする。

WHERE 句を使用すると、営業担当者ごとに個別のパブリケーションを作成する必要があります。次のパブリケーションは、Sam Singer という名前の営業担当者用です。他のそれぞれの営業担当者にも、同様のパブリケーションが必要になります。

CREATE PUBLICATION PubOrdersSamSinger (
   TABLE SalesOrders
      WHERE Active = 1
);

次の文では、PubsOrdersSamSinger パブリケーションに対して Sam Singer をサブスクライブします。

CREATE SUBSCRIPTION
TO PubOrdersSamSinger
FOR Sam_Singer;

SUBSCRIBE BY 句を使用する場合、必要なパブリケーションは 1 つのみです。すべての営業担当者が、次のパブリケーションを使用できます。

CREATE PUBLICATION PubOrders (
   TABLE SalesOrders 
   SUBSCRIBE BY SalesRepresentativeID
);

次の文では、Sam Singer の ID 8887 で、PubsOrders パブリケーションに対して Sam Singer をサブスクライブします。

CREATE SUBSCRIPTION
TO PubOrders ('8887')
FOR Sam_Singer;

SUBSCRIBE BY 句を使用して一部のローのみをパブリッシュする
WHERE 句を使用して一部のローのみをパブリッシュする