clé étrangère problème dans jdbc
J'ai deux fonctions:
public void Populate_flights()
public void Populate_reservations()
De vol et les réservations sont deux tables.L'un des l'entrée, j'.e vol n'. réservation de table. Donc, c'est une clé étrangère.
Maintenant, j'ai besoin de remplir la base de données via jbdc. Je suis donc en utilisant: Dans
public void Populate_reservations() fonction:
Statement s = conn.createStatement();
s.executeUpdate("DELETE FROM reservations");
public void Populate_flights() -:
Statement s = conn.createStatement();
s.executeUpdate("DELETE FROM flights");
Donc, de cette façon, avant le remplissage de la base de données, toutes mes entrées précédentes sont supprimées et pas de données redondantes est là.Depuis, il y a une clé étrangère dans la réservation de la table, je ne peux pas supprimer des entrées de vol en premier. J'ai supprimer les entrées de réservation d'abord. Mais la réserve de fonction est appelée après le vol de la fonction.ALORS, comment pourrais-je faire pour qu'il supprime toutes les entrées.
De sorte qu'il devrait être comme ceci:
Statement s = conn.createStatement();
s.execute("SET FOREIGN_KEY_CHECKS=0");
s.executeUpdate("DELETE FROM flights");
s.execute("SET FOREIGN_KEY_CHECKS=1");
Vous devez vous connecter pour publier un commentaire.
Donc, vous voulez cascade la clé étrangère références sur supprimer. Vous êtes sur la contrainte de clé étrangère. D'abord supprimer l'ancienne contrainte et puis le recréer avec la cascade d'instruction. En supposant que le FK nom est
fk_flight
, voici un exemple:De cette façon, tous référencés réservations seront supprimés si vous supprimez seul le vol.
Vous pouvez désactiver temporairement clé étrangère vérifie dans MySQL pour effectuer des opérations qui échouerait si ces vérifications ont été activés:
Remarque que c'est un paramètre de connexion de sorte que vous avez à faire tout votre contenu à l'aide de la même
conn
objet.