插入复制键复合键

时间:2012-08-21 13:14:04

标签: mysql sql

我希望我的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不再插入,而是从其他系统中删除已删除的引用。

我需要更改完整的表格保持同步?

1 个答案:

答案 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