0

mysql innodb データベースを使用する Web アプリの開発を引き継ぎました。クライアントは、誤ってデータベースに多くの重複レコードを持っています。1 つのレコードを保持し、もう一方の関連データをそれにプッシュするためのマージ ツールを構築しています。

たとえば、タイプミスが原因で、私が持っている可能性があります。

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

次に、entity_id にリンクされた一連のテーブルがあります。「hijklmn」を削除し、他のテーブル内のすべての関連データの「customer_entity_id」を「abcdef」に変更したいと考えています。

問題は、すべての関係が削除カスケード上にあることです。データを失うことなくこれら 2 つのレコードをマージする方法はありますか?

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 に答える