0

我想让我m:n的表与另一个系统的另一个 mysql 数据库表保持同步。

假设一个员工可以在 n 个部门工作,一个部门可以有 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 回答