2011-03-24 4 views
0

J'ai deux table, avec un PK d'ID. Si dis je supprime l'entrée pour ID = 1, je veux qu'il supprime automatiquement le FK d'ID dans l'autre table. En d'autres termes je veux qu'il supprime également toutes les entrées avec ID = 1 dans l'autre table. Comment puis-je faire ceci? J'ai lié la relation PK-FK, mais lorsque je supprime l'entrée avec ID 1 dans la table PK, il ne supprime pas le FK.supprimer la clé primaire supprime également la clé étrangère

+0

double possible de [Comment puis-je utiliser une suppression en cascade dans une base MySQL?] (Http://stackoverflow.com/questions/511361/how-do-i-use-on-delete-cascade-in- mysql) –

Répondre

4

Assurez-vous que vous êtes using the InnoDB engine pour les deux tables et ajoutez un foreign-key constraint en spécifiant on delete cascade. Votre création de table SQL devrait ressembler à ceci:

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

child_table et parent_table sont les noms de vos enfants et tables parents.

+0

est-il possible de modifier la table que j'ai déjà? – aherlambang

+0

@EquinoX Bien sûr. Recherchez la commande 'alter table' ou utilisez une interface graphique comme HeidiSQL. – meagar

0

Vous devez définir vos contraintes de clé étrangère comme ON DELETE CASCADE.

Remarque: Vous devez utiliser le moteur de stockage InnoDB, le moteur de stockage MyISAM par défaut ne prend pas en charge la relation de clés étrangères.

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 
) 
Questions connexes