0

music というデータベースがあり、内部に 4 つのテーブルがあります。

  1. バンドのメンバー
  2. バンド
  3. CD
  4. リリースします。

データベース内の cd005 (cd_id 列のエントリ) に関連するすべての情報を削除したいと考えています。

私は私が使用できると思います

DELETE FROM table_name WHERE cd_id='cd005'

個々のテーブルごとに、このIDに関連するデータをデータベース全体から一度に削除することで、この問題に取り組む方法があるかどうかを知りたい.

4

1 に答える 1

1

はい、方法があります。外部キーのカスケード削除については、mysql のドキュメントを確認してください。

例:

CREATE TABLE parent (id INT NOT NULL,
                     PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE child (id INT, parent_id INT,
                    INDEX par_ind (parent_id),
                    FOREIGN KEY (parent_id) REFERENCES parent(id)
                      ON DELETE CASCADE
) ENGINE=INNODB;

Insert into parent set id=1;
Insert into parent set id=2;
Insert into parent set id=3;
Insert into child set id=1, parent_id=1;
Insert into child set id=2, parent_id=1;


select * from parent;
select * from child;
delete from  parent where id=1;
select * from parent;
select * from child;


ID
1
2
3
 Record Count: 3; Execution Time: 0ms View Execution Plan
ID  PARENT_ID
1   1
2   1
 Record Count: 2; Execution Time: 0ms View Execution Plan
 Record Count: 0; Execution Time: 1ms
ID
2
3
 Record Count: 2; Execution Time: 0ms View Execution Plan
 Record Count: 0; Execution Time: 0ms
于 2012-04-15T19:02:03.083 に答える