web-dev-qa-db-fra.com

Comment utiliser la suppression de cascade dans mysql?

J'ai une base de données de composants. Chaque composant est d'un type spécifique. Cela signifie qu'il existe une relation plusieurs-à-un entre un composant et un type. Lorsque je supprime un type, je voudrais supprimer tous les composants qui ont une clé étrangère de ce type. Mais si je ne me trompe pas, la suppression en cascade supprimera le type lorsque le composant est supprimé. Existe-t-il un moyen de faire ce que j'ai décrit?

38
Marius

Voici ce que vous incluriez dans votre tableau des composants.

CREATE TABLE `components` (
    `id` int(10) unsigned NOT NULL auto_increment,
    `typeId` int(10) unsigned NOT NULL,
    `moreInfo` VARCHAR(32), 
    -- etc
    PRIMARY KEY (`id`),
    KEY `type` (`typeId`)
    CONSTRAINT `myForeignKey` FOREIGN KEY (`typeId`)
      REFERENCES `types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
)

N'oubliez pas que vous devez utiliser le moteur de stockage InnoDB: le moteur de stockage MyISAM par défaut ne prend pas en charge les clés étrangères.

54
nickf

Vous devez définir vos contraintes de clé étrangère sur 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
)
2
Silambarasan

utiliser ce sql

SUPPRIMER T1, T2 DE T1 INTÉRIEUR JOINDRE T2 SUR T1.key = T2.key O condition condition

0
md asif rahman