2011-06-17 10 views
1

たちはMySQLでは、このように3関連のテーブルがあるとします。鎖修飾

 
Table 1:   Table 2:   Table 3: 
------------- -------------  ------------- 
UserID  | ProfileID |  ArticleID | 
------------- -------------  ------------- 
Username | UserID  |  UserID  | 
------------- -------------  ------------- 
Password | UserAvatar |  Article  | 
------------- -------------  ------------- 

私は表1の削除操作時にすべての関連レコードを削除する必要があります。つまり、ユーザーが表1で削除アクションを実行すると、関連する他の表からの関連レコードは自動的に削除され、これを達成するための多数の問合せは作成されないか、マスターレコードなしの孤立レコードが必要です。

どうすればよいですか? ベストプラクティスは何ですか?

ありがとうございました。

答えて

1

カスケード削除を実行します。

  • は、外部キーがON DELETE CASCADE

として定義する必要がありますそして、あなたが行われているリンク

  • としてユーザーIDを使用して、テーブル間のforeign keysを作成します。ここではあなたがしなければならないものです。つもり

    更新

    ないはあなたにTEH codezを与えます。あなたが読む必要があるのはhereです。あなたに魚を与えるつもりはない、自分の魚を捕まえる方法を教えている。

  • 1

    Manual?特に、ON UPDATEとON DELETEについてのビット。

    テーブルを別のエンジン(これはFK制約をサポートする唯一のエンジン)に保ちたい場合は、DMLアクセスをプロシージャ(SECURITY DEFINER権限を使用してラップし、ダイレクトUPDATE /ユーザーのDELETE特権)または関連付けるtriggers