Force InnoDB de vérification des clés étrangères sur une table ou des tables?

J'ai un ensemble de InnoDB tables que j'ai régulièrement besoin de maintenir par la suppression de certaines lignes et en insérant les autres. Plusieurs tables ont des contraintes de clé étrangère référence à d'autres tables, donc cela signifie que la table de chargement de l'ordre est important. Pour insérer les nouvelles lignes, sans se soucier de l'ordre des tables, j'utilise:

SET FOREIGN_KEY_CHECKS=0;

avant, et puis:

SET FOREIGN_KEY_CHECKS=1;

après.

Lorsque le chargement est terminé, j'aimerais vérifier que les données de la mise à jour des tables de toujours tenir l'intégrité référentielle--que les nouvelles lignes, ne pas briser les contraintes de clé étrangère-mais il semble qu'il n'y a aucun moyen de le faire.

Comme un test, j'ai entré les données que j'étais sûr violé les contraintes de clés étrangères, et sur la ré-activation de la clé étrangère chèques, mysql produit pas d'avertissements ou d'erreurs.

Si j'ai essayé de trouver un moyen de spécifier la table de chargement de l'ordre, de gauche et le contrôle des clefs étrangères sur pendant le processus de chargement, ce ne serait pas me permettre de charger des données dans une table qui dispose d'un auto-référencement contrainte de clé étrangère, de sorte que ce ne serait pas une solution acceptable.

Est-il de toute façon à force de InnoDB pour vérifier une table ou une base de données des contraintes de clés étrangères?

  • C'est une parodie, et incroyable, que MySQL n'effectue pas de FK de validation lorsque vous ré-activé FKs via SET FOREIGN_KEY_CHECKS=1;. À tout le moins, ils devraient exposer des fonctionnalités intégrées afin de ne pas avoir à sauter à travers des cerceaux pour valider l'intégrité des données dans la base de données.
InformationsquelleAutor pcronin | 2010-02-12