cascading deletesで外部キーを定義します。親行を削除すると、子行も同じ行に従います。 Thisチュートリアルでご案内します。
ヒント:あなたはあなたのケースで作成
時に、あなたの子テーブルにON DELETE CASCADE
を追加する必要があります。今すぐ
CREATE TABLE parent_table(
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB;
CREATE TABLE child_table (
id int(11) NOT NULL AUTO_INCREMENT,
parent_table_id int(11) NOT NULL,
name varchar(255) NOT NULL,
PRIMARY KEY (id),
KEY parent_table_id (parent_table_id),
CONSTRAINT id_ibfk_1
FOREIGN KEY (parent_table_id)
REFERENCES parent_table (parent_table_id)
ON DELETE CASCADE
) ENGINE=InnoDB;
、あなたの削除クエリ:
DELETE FROM parent_table
WHERE id= 2
あなたの結果のデータは次のようになり:
parent_table
----------------------------------------------------------------------
id name
1 a
child_table
---------------------------------------------------------------------
id parent_table_id name
1 1 c
2 1 d
3 1 e
コメントで要求されたよう:
あなたはmysql docs
- キーから説明を見ることができます - インデックス
- 制約のためのシノニム - 外部キー制約
- 参照 - 外部キー制約の一部であり、MySQLが仕様の値を要求する参照テーブルのifiedカラムも、参照テーブルの指定されたカラムに存在します。
更新既存のテーブル:INODBについては
ALTER TABLE child_table
ADD CONSTRAINT id_ibfk_1
FOREIGN KEY (parent_table_id)
REFERENCES parent_table (parent_table_id)
ON DELETE CASCADE
あなたは親が削除された場合、子行を削除しますか? –
そのための外部キーの概念を使用してください.http://dev.mysql.com/doc/refman/5.7/en/innodb-foreign-key-constraints.html –
あなたのエンジンは何ですか?テーブルのスキーマを見てみましょう。それがINODBの場合、それは可能です。それ以外の場合は、結合または2つのクエリを使用して記述する必要があります。 –