0

我已经接管了使用 mysql innodb 数据库的 Web 应用程序的开发。客户端意外在数据库中有很多重复记录。我正在构建一个合并工具来保留一条记录并将另一条的关联数据推送到它。

因此,例如,由于拼写错误,我可能有。

entity_id    entity_cat    common_name
--------------------------------------
abcdefg      customer      John Doe
hijklmn      customer      Jon Doe

然后我有一堆链接到 entity_id 的表。我想删除“hijklmn”,并让其他表中的所有关联数据将它们的“customer_entity_id”更改为“abcdef”。

问题是,所有关系都具有删除级联。我有什么办法可以合并这两条记录而不会丢失任何数据?

4

2 回答 2

0

关于您的ON DELETE CASCADE问题,您可以使用以下脚本模板暂时禁用所有外键约束以进行查询:

ALTER TABLE `entities` NOCHECK CONSTRAINT ALL

-- commit query here

ALTER TABLE `entities` CHECK CONSTRAINT ALL
于 2012-08-07T17:55:24.063 回答
0

如果在删除之前更新所有记录,则根本不应该有任何级联:

update other_table_1 set entity_id='abcdefg' where entity_id='hijklmn';
update other_table_2 set entity_id='abcdefg' where entity_id='hijklmn';
update other_table_3 set entity_id='abcdefg' where entity_id='hijklmn';
...
delete from user_table where entity_id='abcdefg'
于 2012-08-07T17:56:11.860 回答