Bonjour,
Je travail sur MySQL 5.0.37-nt
J'ai 2 tables en InnoDB. L'une à un index qui fait une référence à un champ sur l'autre table.
Voici l'illustration :
Code :
- CREATE TABLE MaTable1(
- id int(10) etc....
- constraint pk_id primary key (id)
- );
- CREATE TABLE MaTable2(
- id int(10) ...,
- id_tbl1 int(10) ...,
- constraint pk_id primary key (id),
- constraint fk_id_tbl1 foreign key (id_tbl1) references MaTable1(id)
- );
|
Je copie des données provenant d'une autre base de données dans la MaTable1, ensuite je copie les données provenant de cette autre base de données mais de table différente dans MaTable2. Le problème est que MySQL me génère une erreur :
Code :
- Error 1452 : Cannot add or update a child row: a foreign key constraint fails (`mibtel/entrg_apeados1`, CONSTRAINT `fk_entrg_apeados1_1` FOREIGN KEY (`ref_documento`) REFERENCES `entrg_apeados` (`ref_documento`) ON DELETE CASCADE)
|
Il va de soit que, dans la base de données existante, les données de la clé primaire sont présentes aussi bien dans la table mère que dans la table fille.
Cette erreur j'arrive à la contourner en supprimant mes références mais ca commence à devenir contraignant pour ma base et les tables que j'avais défini. J'aimerais savoir d'où ça vient? Et pourquoi? Serait-ce parce que la valeur d'un index n'est pas présent dans les valeurs de la clé primaire ?
Au passage, serait-il possible de m'expliquer synthétiquement le principe du ON DELETE c'est-à-dire qui agit sur qui et quels sont les actions produites ?
Je vous remercie pour votre aide et votre patiente.
Message édité par AlphaZone le 15-05-2007 à 17:06:49