2016-09-02 9 views
1

たとえば、顧客が削除された場合、他のテーブル(S)のすべての関連行が削除されます。どのようにmysqlを行うには、私は多くの解決策を試みたが、誰も働いていない時間です。 enter image description hereMySQL - 多対多関係の関連行を削除する方法

+0

これは、あなたが使用しているデータベースを知らずに外部キー制約が見えるものを理解せずに答えることはほとんど不可能です好き。つまり、 'Customer_Addresses'はカスケード削除を伴う外部キーを持っていて、そのテーブルからエントリを削除すると' Customer'と 'Addresses'からデータが削除されます – glennstar

答えて

1

最も簡単な方法ON DELETE CASCADEオプションとデザイン関連テーブルです。あなたが外部キー(他のテーブルの主キー)を持つデータベースのテーブルをデザインとき

は基本的に、あなたはその外部キーためON DELETE CASCADEを設定することができます。つまり、プライマリテーブル(この外部キーがプライマリキーであるテーブル)でレコードが削除された場合、他のテーブルの関連レコードもすべて削除されます

したがって、複数のテーブルの関連するデータを削除するために「クレイジー」クエリを作成する必要はありません。

次のリンクをON DELETE CASCADEについて詳しく知ることができます。mysqltutorial.org/mysql-on-delete-cascade

+0

よりも、動作します。 – stack

1

あなたがDELETEに最初の住所、顧客を持っている、と関係 または後にあなたがcascateをDELETEを使用しようとすることができます...しかし、注意してくださいhttp://www.mysqltutorial.org/mysql-on-delete-cascade/ は、これも参照してください。MySQL on delete cascade. Test Example

DELETE FROM Addresses WHERE AddressID IN (SELECT AddressID FROM Custormers_Addresses WHERE CustormerID = ID)

はTHEN ... RELACIONを削除... THEN顧客 DELETE FROM Customers WHERE CustomerID = ID

を削除 それを達成するために210

+0

[ここで](http: /stackoverflow.com/questions/17225080/mysql-delete-from-with-union-subquery-by-in-condition)を参照してください。また、大量のデータがない限り、InnoDBなどのトランザクションデータベースを使用することを検討してください。 – glennstar