Bonjour,
Je suis entrain de me frotter à l'option IGNORE dans une requête DELETE dans l'espoir de ne supprimer que des lignes d'une table donnée non référencées par une quelconque clé étrangère dans ma base.
Le but est de nettoyer la table en supprimant ce qui ne sert plus puisque non référencé.
De ce que je comprends de la doc MySQL à son propos, la clause indique au SGBD qu'il faut ignorer les erreurs et n'afficher que des alertes.
Je pousse donc la requête suivante :
Je reçois bien une alerte puisque j'ai des lignes qui sont encore référencées ailleurs mais celles qui ne le sont plus (normalement rien n'empêche leur suppression) sont toujours présentes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 DELETE IGNORE FROM ma_table WHERE 1>0
Il faut donc déduire que la requête est purement et simplement stoppée dès lors qu'une contrainte d'intégrité apparait.
Est-il possible de réaliser ce que je souhaite sans avoir recours à une requête imbriquée qui donne la liste des enregistrements à ne pas tenter de supprimer ?
Cette table est référencée par plusieurs autres tables et il serait franchement fastidieux de vérifier partout avant de lancer le DELETE.
Merci par avance pour vos retours.
Partager