リレーショナル・データベースのテーブルは、外部キーの参照で関連付けられることがよくあります。そのため、参照整合性制約によって、データベースの一貫性が保たれます。エンティティ整合性と参照整合性の確保を参照してください。
データベースの一部のみをレプリケートする場合は、レプリケート後のデータベースでも引き続き参照整合性が保たれていることを確認する必要があります。
参照テーブルがレプリケートされないエラーを回避する必要があります。リモート・データベースには、レプリケートされないテーブルを参照する外部キーが含まれないようにしてください。
たとえば、統合データベースの SalesOrders テーブルには、Employees テーブルに対する外部キーがあります。SalesOrders.SalesRepresentative は、プライマリ・キー Employees.EmployeeID を参照する外部キーです。
次の例では、Employees テーブルを含まず、SalesOrder テーブル全体を含むパブリケーション PubSales を作成します。
CREATE PUBLICATION PubSales ( TABLE Customers, TABLE SalesOrders, TABLE SalesOrderItems, ); |
リモート・ユーザ Rep1 は、PubSales パブリケーションに対してサブスクライブします。次に、統合データベースから Rep1 を抽出して、Rep1 用のデータベースの作成を試みます。ただし、Rep1 には Employees テーブルがないため、データベースの作成に失敗します。この問題を回避するには、次の処理を実行します。
外部キー参照を削除する 外部キー参照を除外するには、抽出ユーティリティ (dbxtract) を使用するときに -xf オプションを指定します。
ただし、リモート・データベースから外部キー参照を削除する場合、リモート・データベースには、SalesOrders テーブルの SalesRepresentative カラムに無効な値が挿入されることを防ぐ制約はありません。
リモート・データベースで SalesRepresentative カラムに無効な値が挿入された場合、レプリケートされた INSERT 文は統合データベースで失敗します。
不足しているテーブルをパブリケーションに追加する パブリケーションに Employees テーブル (または少なくともプライマリ・キー) を追加します。次に例を示します。
CREATE PUBLICATION PubSales ( TABLE Customers, TABLE SalesOrders, TABLE SalesOrderItems, TABLE Products, TABLE Employees ); |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |