Ok, j'ai deux tables. Ils ont tous les deux des clés. J'ai une autre table qui référence les deux clés. Comment puis-je faire une contrainte lorsque j'ajoute dans ce troisième si l'une des clés n'existe pas dans les deux premières tables, il n'insère pas ce tuple dans la troisième table. J'insère dans phpMyAdmin. Merci.Insertion dans la table mySQL avec une clé étrangère qui n'a pas encore été créée
Répondre
EDIT:
Désolé pour une mauvaise interprétation de votre question. Mysql supporte uniquement les contraintes avec certains moteurs. InnoDB est celui que je connais et utilise généralement, mais d'autres pourraient ne pas vraiment être sûrs. Donc, avec Inno DB youd besoin ème schéma suivant:
CREATE TABLE my_table_a (
`id` INTEGER UNSIGNED NOT NULL auto_increment,
# your other column definitions
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
CREATE TABLE my_table_b (
`id` INTEGER UNSIGNED NOT NULL auto_increment,
# your other column definitions
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
CREATE TABLE my_table_a_b (
`id` INTEGER UNSIGNED NOT NULL auto_increment,
`table_a_id` INTEGER UNSIGNED NOT NULL,
`table_b_id` INTEGER UNSIGNED NOT NULL
PRIMARY KEY (`id`),
KEY (`table_a_id`),
KEY (`table_b_id`),
CONSTRAINT `ab_FK_a`
FOREIGN KEY (`table_a_id`)
REFERENCES `my_table_a` (`id`),
CONSTRAINT `ab_FK_b`
FOREIGN KEY (`table_b_id`)
REFERENCES `my_table_b` (`id`)
) ENGINE=InnoDB;
SET FOREIGN_KEY_CHECKS=0;
# Your INSERTS
SET FOREIGN_KEY_CHECKS=1;
Désactivera les contrôles FK ast les instructions SQL reflètent qu'après avoir effectué vos insertions. Si je me souviens bien Il va ensuite vérifier les clés une fois rallumé. Pour cette raison, vous voudrez peut-être utiliser une transaction afin que vous puissiez revenir en arrière si vous avez fait une erreur et les touches ne correspondent pas à la fin. Sinon, vous pourriez avoir des données partielles qui est jamais amusant :-)
je ne sais pas contrainte, mais vous pouvez utiliser cette requête d'insertion:
INSERT INTO TAB3 (TAB3_key1, TAB3_key2) SELECT val1, val2 DE TAB1 REJOIGNEZ TAB2 ON EXISTS (SELECT * FROM TAB1 REJOIGNEZ TAB2 ON TAB1_key = val1 ET TAB2_key = val2) LIMITE 1; Où val1, val2 - valeurs que vous voulez insérer.
- 1. MySQL: insertion d'enregistrements dans des tables liées par clé étrangère
- 2. Impossible de créer une table mysql avec une clé étrangère
- 3. Création d'une clé étrangère MySQL avec la commande alter table
- 4. doute clé étrangère dans MYSQL
- 5. MySQL clé étrangère à une autre clé étrangère
- 6. La création d'une clé étrangère dans MySQL génère une erreur:
- 7. EF ne génère pas d'association de clé étrangère à partir d'une clé étrangère dans la table
- 8. Sélectionnez tous les éléments d'une table qui n'apparaissent pas dans une clé étrangère d'une autre table
- 9. Erreur avec la clé étrangère
- 10. Impossible d'insérer des valeurs avec une clé étrangère dans MySQL
- 11. Clé étrangère à plusieurs colonnes dans MySQL?
- 12. Problème de clé étrangère MySQL
- 13. Comment sélectionner uniquement les lignes qui n'ont pas de clé étrangère correspondante dans une autre table de MySQL?
- 14. contraintes de clé étrangère mysql
- 15. Insertion de la table MySQL
- 16. MySQL: Insérer si la clé étrangère existe
- 17. MySQL: comment ajouter une clé étrangère
- 18. Référence clé étrangère dans mysql innodb
- 19. CRUD pour table avec clé étrangère
- 20. Comment mettre à jour la clé primaire de la table qui est référencée comme clé étrangère dans une autre table?
- 21. concept de clé étrangère mysql
- 22. Suggestions d'insertion avec contrainte de clé étrangère dans mysql
- 23. MySQL tentant de supprimer toutes les lignes qui ne sont pas contraints par la clé étrangère
- 24. MySql clé étrangère qui est une clé composite - quelle est la syntaxe?
- 25. Y at-il une raison de ne pas joindre la clé étrangère à la clé étrangère?
- 26. Insertion de la table MySQL
- 27. Problème de migration de Rails - Clé étrangère non créée
- 28. Remplissage Html.DropDownList avec la table de clé étrangère vlaues
- 29. Problème avec la contrainte de clé étrangère
- 30. Tronquer une table référencée par une clé étrangère
Ne répond pas à la question. En fait, supprime tous les contrôles d'intégrité qui est le contraire de ce qui est demandé. –
Oui, je n'ai vraiment pas compris ce qu'il disait. J'espérais un moyen où si une clé n'existe pas dans une table et j'essaie de l'ajouter comme une clé étrangère, cela ne fonctionnerait pas. – ranzy
oh j'ai mal lu .. bien qu'il ait voulu ajouter des disques relaed mais pas dans l'ordre pour son lot. Voir ci-dessus modifier. – prodigitalson