2011-03-24 227 views
0

我有兩個表,一個ID爲PK。如果說我刪除了ID = 1的條目,我希望它自動刪除另一個表中的ID的FK。換句話說,我希望它也應該刪除其他表中ID = 1的所有條目。我怎樣才能做到這一點?我已經鏈接了PK-FK關係,但是當我刪除PK表中的ID爲1的條目時,它不會刪除FK。刪除主鍵也刪除外鍵

+0

可能重複http://stackoverflow.com/questions/511361/how-do-i-use-on-delete-cascade-in- mysql) – 2011-03-24 19:06:43

回答

4

確保你對這兩個表都是using the InnoDB engine,並添加foreign-key constraint指定on delete cascade。你的表創建SQL應該是這個樣子:

create table child_table (
    parent_id int references parent_table(id) on delete cascade 
) engine 'innodb'; 

其中child_tableparent_table是你的孩子和家長表的名稱。

+0

是否有可能改變我已有的表格? – aherlambang 2011-03-24 19:22:18

+0

@EquinoX當然。查看'alter table'命令或使用像HeidiSQL這樣的GUI前端。 – meagar 2011-03-24 20:36:10

0

您必須將您的外鍵約束定義爲ON DELETE CASCADE。

注意:您需要使用InnoDB存儲引擎,他默認的MyISAM存儲引擎不支持外鍵關係。

CREATE TABLE `table2` (
`id` int(11) NOT NULL auto_increment, 
`name` int(11) NOT NULL, 
PRIMARY KEY (`id`), 
KEY `ids` (`ids`) 
CONSTRAINT `foreign` FOREIGN KEY (`ids`) 
REFERENCES `table2` (`ids`) ON DELETE CASCADE ON UPDATE CASCADE 
) 
的[如何在級聯刪除在MySQL中使用?(