主キー(PK)がなくても心配なし!DBMotoから(差分レプリケーションのための)仮想PKを設定可能


DBMotoで差分レプリケーション(ミラーリング・シンクロナイゼーション)を行う場合には、トランザクションログを参照してどのレコードでトランザクションがあったかを識別させるためにデータベースのテーブルに主キー(PK)が必要です。もちろん複合キーでも可能です。

・・・テーブルに主キーがない場合はレプリケーションできないのでしょうか・・・?

いいえ、心配いりません。DBMotoではテーブルに主キーがない場合に、DBMotoで差分レプリケーションを行うためにPKとして扱うフィールドを疑似的に設定することが可能です(仮想PKと呼んでいます)。こちらも複合キーの設定は可能です。その際DBサイドに変更を加えることもありません。

ただし仮想PKとして設定するフィールドの値は一意で重複しない値であることが必要です。1つのフィールドでは重複するようであれば複合キーの設定を検討する必要があります。

手順は下記の通り。

対象のテーブルを右クリックし「主キー設定」を選択します。

テーブルのフィールドが表示されます。

仮想PKとして設定するフィールドを右側に移動します。

以上で設定は完了です。簡単です。

なお、SQLServerのディストリビュータ機能を使用した差分レプリケーションに限り、この仮想PK設定は使用できません。データベースのテーブルにPKが必須となります。

関連したトピックス