我希望我的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不再插入,而是从其他系统中删除已删除的引用。
我需要更改完整的表格保持同步?
答案 0 :(得分:0)
您不必删除当前的外键,只需添加主键或唯一复合键:
ALTER TABLE `employee_department`
ADD PRIMARY KEY (`employee_id`, `department_id`);
或
ALTER TABLE `employee_department`
ADD UNIQUE INDEX (`employee_id`, `department_id`);
但是,请记住,您仍然必须手动删除原始系统中已删除的相关记录完整的关系。
2个可靠的方法是进行完整的数据库擦除/转储或使用replication