2012-04-15 127 views
0

我有一个名为music的数据库,里面有4个表格;从数据库中删除所有信息(MySQL)

  1. band_members
  2. CDS
  3. 版本。

我想删除数据库中与cd005(这是一个cd_id列条目)有关的所有信息。

我想我可以在每一个人的表使用

DELETE FROM table_name WHERE cd_id='cd005' 

,但我想知道是否有通过删除整个数据库,在一次有关这个ID的数据来解决这个问题的方法。

回答

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 
+0

我会级联 – sikas 2012-04-15 19:07:30

+0

去如何使用级联删除?我可以从我的表中看到,我的cd_id是我的cds表中的主键。我想如果我删除它,所有的子项也应该删除? – 2012-04-15 19:11:49