リレーショナルデータベースのテーブルは、外部キーの参照で関連付けられることがよくあります。そのため、参照整合性制約によって、データベースの一貫性が保たれます。
データベースの一部のみをレプリケートする場合は、レプリケート後のデータベースでも引き続き参照整合性が保たれていることを確認する必要があります。
参照テーブルがレプリケートされないエラーを回避する必要があります。リモートデータベースには、レプリケートされないテーブルを参照する外部キーが含まれないようにしてください。
たとえば、統合データベースの 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 ); |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |