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 のレプリケーション設計と設定

 

重複プライマリ・キー・エラー

すべてのユーザが同じデータベースに接続する場合は、各 INSERT 文がユニークなプライマリ・キーを使用するすることが保証されるため、問題は発生しません。ユーザがプライマリ・キーの再使用を試みる場合に、INSERT 文のエラーが発生します。

レプリケーション・システムにおいては状況が異なります。これは、ユーザが複数のデータベースに接続しているためです。異なるリモート・データベースに接続している 2 人のユーザが、同じプライマリ・キーの値を使用してローを挿入すると問題が発生します。各リモート・データベースでは、プライマリ・キーの値がユニークであるため、各文が正常に実行されます。

ただし、この 2 人のユーザが自分のデータベースを同じ統合データベースにレプリケートすると、問題が発生します。統合データベースに対する最初のデータベースのレプリケーションは、正常に実行されます。ただし、レプリケーション・システムの指定されたデータベースで受信される、2 番目の挿入の実行は失敗します。

必ずユニークとするプライマリ・キー値

プライマリ・キーのエラーを回避するには、データベースでローが挿入されるときに、そのプライマリ・キーがシステムのすべてのデータベース間でユニークであることが必ず保証されている必要があります。この目的を達成するには、次のようないくつかの方法があります。

  1. SQL Anywhere データベースのデフォルトのグローバル・オートインクリメント機能を使用します。グローバル・オートインクリメント・カラムを参照してください。

  2. プライマリ・キー・プールを使用して、各サイトで未使用のユニークなプライマリ・キー値のリストを管理します。プライマリ・キー・プールの使用を参照してください。

これらの方法のいずれか一方または両方を使用すると、プライマリ・キーの重複を回避できます。

参照

グローバル・オートインクリメント・カラム
プライマリ・キー・プールの使用