70 votes

MySQL : supprimer une ligne ignorant la contrainte de clé étrangère

je travaille donc sur quelques tableaux et il y a une certaine incohérence de données entre eux... Une ou deux tables ont une contrainte de clé étrangère sur une table particulière (appelez-la table X), mais cette table a plusieurs lignes avec la colonne de clé étrangère.

Ce que je veux faire, c’est supprimer les lignes dupliquées dans le tableau X, mais la contrainte de clé étrangère m’empêche de le faire. Existe-t-il un moyen de forcer la suppression des lignes tout en ignorant la contrainte de clé étrangère puisque je sais ce que je fais ?

183voto

mattedgod Points 4097

``

Cela empêchera MySQL de vérifier les clés étrangères. Assurez-vous de le remettre à 1 lorsque vous avez terminé.

En outre, vous pouvez toujours supprimer la clé étrangère, puis l’ajouter ultérieurement si vous souhaitez n’affecter qu’une clé singulière.

``

2voto

Anse Points 803

Comme certaines personnes l’ont déjà souligné, ignorer une clé étrangère de restriction vous laisse avec des incohérences de base de données. Prévenir `` s est quelque chose que vous voulez dans de tels cas.

Vous feriez mieux de supprimer les lignes en fonction avant la requête principale :

Ou, encore mieux, changez la clé étrangère une fois, afin qu’elle effectue la suppression automatiquement (en cascade):

0voto

toshi Points 327

Pour développer la réponse acceptée, vous devez spécifier le nom de la contrainte après ``

Vous pouvez vérifier le nom de la contrainte en émettant `` .

Dans ce cas, « foo_ibfk_1 » est le nom de la contrainte. Vous pouvez donc écrire :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X