0

いくつかの古いデータベース テーブルを復元しようとしていますが、それらを構築するときに外部キーを使用していませんでした。外部キーに対応するフィールドがありますが、接続先のリレーション テーブルに設定していません。

他のテーブルでいくつかの行が削除されているため、そのリレーションを追加しようとしても追加できないため、問題があることを正しく知っています。

このタイプのNULL関係をチェックして、必要のない行を削除するためのmysqlコマンドはありますか..そして最後に..関係を追加します。

表A
    ID、
    名前

表B
   ID、
   tableA_id、
   ポイント

私はいくつかの TableA 行を削除しました..今、私はその関係を持つことができません。

役立つmysqlコマンド、または手動で確認する必要がありますか?

ありがとう

4

1 に答える 1

1

PRIMARY KEY少なくとも制約があると仮定すると、TableA.id試すことができます

-- Delete all orphaned records from TableB
DELETE b
  FROM tableb b LEFT JOIN tablea a
    ON b.a_id = a.id
 WHERE a.id IS NULL;
-- Create a FK constraint 
ALTER TABLE TableB 
ADD CONSTRAINT fk_a_id FOREIGN KEY (a_id) REFERENCES tablea(id);

これがSQLFiddleのデモです

于 2013-08-30T21:49:37.987 に答える