J'ai une table contenant 2 entrées.Suggestions d'insertion avec contrainte de clé étrangère dans mysql
Quelque chose comme
CREATE TABLE `db`.`main` (
`id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
);
L'id pour ces 2 entrées sont générées automatiquement les clés primaires.
J'ai une autre table avec une règle liant
CREATE TABLE `db`.`day` (
`main_id` int(10) unsigned NOT NULL,
`day` tinyint(4) NOT NULL,
CONSTRAINT `fk_db_main` FOREIGN KEY (`main_id`) REFERENCES `main` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
);
maintenant je peux obtenir un résultat avec succès en utilisant
SELECT * FROM main where id='9';
mais quand je tente d'exécuter
INSERT INTO day (main_id, day) VALUES (9, 0);
Je reçois
"Impossible d'ajouter ou de mettre à jour une ligne enfant: une contrainte de clé étrangère échoue (db
. day
, CONTRAINTE fk_db_main
FOREIGN KEY (main_id
) RÉFÉRENCES main
(id
) ON SUPPRIMER AUCUNE ACTION SUR L'ACTION MISE À JOUR NO) (1452) »
Toutes les suggestions sur ce que je suis absent avec l'insert?
** I hadn La cause réelle était que la table db principale était dans MyISAM, et les tables InnoDB ne pouvaient pas créer une clé étrangère qui se connectait à MyISAM. les clés étrangères, même si elles proviennent d'autres tables
L'instruction d'insertion semble correcte. –
Je suis perplexe que vous pensez qu'il y a deux 'entrées' dans la table 'principale'. À mon avis, il y a une colonne - appelée ID - et c'est aussi la clé primaire de la table. –
Aussi, pourquoi citez-vous le '9' dans le SELECT? Et quel résultat obtenez-vous lorsque vous exécutez le SELECT? –