0

m:nテーブルを別のシステムの別のmysqlデータベーステーブルと同期させたい。

従業員がnの部門で働くことができ、1つの部門にn人の従業員がいると仮定します。

Table Department(id(pk), name)

Table Employee(id(pk), name)

Table employee_department(employee_id(fk), department_id(fk))

私が使用した他のすべてのテーブル"insert into...on duplicate key"では、Mysqlが見つかったアイテムを新しい値で更新しているため、うまく機能しています。このステートメントをemployee_departmentテーブルで使用すると、重複する値が挿入されます(これらはfksのみであるためです)。複合キーを使用できるように、fksをpksに変更することを考えました。しかし、mysqlは再度挿入しませんが、他のシステムから削除された参照を削除しません。

テーブル全体の同期を維持するために何を変更する必要がありますか?

4

1 に答える 1

0

現在の外部キーを削除する必要はありません。主キーまたは一意の複合キーを追加するだけです。

ALTER TABLE `employee_department`
ADD PRIMARY KEY (`employee_id`, `department_id`);

また

ALTER TABLE `employee_department`
ADD UNIQUE INDEX (`employee_id`, `department_id`);

ただし、元のシステムで削除され、関連レコードがそのまま残っている関係を手動で削除する必要があることに注意してください。

信頼できる 2 つの方法は、データベースの完全なワイプ/ダンプを実行するか、レプリケーションを使用することです。

于 2012-08-21T13:33:34.520 に答える