Bonjour,
Comment ajouter une clé étrangère sur une colonne d'une table "parent" (ou "mère" ;o) qui ferait référence à la clé primaire d'une table "enfant" (ou "fille" ;o) mais alors que la table "parent" n'est pas vide?
Exemple,
J'ai une table "enfant"
puis une table "parent"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE TABLE `categorie` ( `id` int(11) NOT NULL auto_increment, `label` varchar(255) collate utf8_unicode_ci NOT NULL PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
C'est donc cette deuxième table qui n'est pas vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE TABLE `objets` ( `id` int(11) NOT NULL auto_increment, `categorieId` int(11) NOT NULL `titreFr` varchar(255) collate utf8_unicode_ci NOT NULL, `titreEn` varchar(255) collate utf8_unicode_ci default NULL `descriptionFr` text collate utf8_unicode_ci, `descriptionEn` text collate utf8_unicode_ci PRIMARY KEY (`id`), KEY `categorieId` (`categorieId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=230 ;
OK, je peux copier ma table `objets` (structure et données) puis la vider et puis ce sera possible d'ajouter la relation via un
et ceci sans obtenir une erreur 1452 de type "Cannot add or update a child row: a foreign key constraint fails..."
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ALTER TABLE `objets` ADD FOREIGN KEY ( `categorieId` ) REFERENCES `mydatabase`.`categorie` ( `id` );
Mais, ensuite, comment repeupler la table "parent" qui n'était pas vide au début?
Partager