|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Développeur Web Inscription : juin 2011 Messages : 11 ![]() |
Hello tout le monde.
Je travaille actuellement sur un transfert de base de donnée et on en profite pour modifier quelques tables et réécrire un déploiement. Le déploiement a été généré sans problème mais contient un peu plus de 30000 insertions, dont moins d'une cinquantaine (seulement) présentant des problèmes d'intégrités : la clé étrangère B ne correspond pas à une clé primaire A inexistante dans la table associée. Cela n'est pas une erreur de conception mais bien les données qui ont été "mal insérées" dès le départ et la table n'envoie elle-même aucune clé ailleurs. J'aimerais donc faire en sorte que ces lignes là soient tout bonnement ignorées, que les insertions foireuses ne soient pas effectuées et n'avoir au moins que des simples warnings, car je me vois pas épelucher les 30000 insertions pour chercher laquelle foire, surtout que MySQL m'indique pas laquelle est foireuse... INSERT IGNORE ne permet pas d'ignorer la ligne foireuse. J'ai pensé utiliser un trigger mais je vois pas comment empêcher l'insertion à partir de ce trigger. Levée d'une exception peut-être ? Auriez-vous une solution à ce problème à suggérer ? Merci pour vos éclairages. |
|
|
00
|
|
|
#2 | |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 655 ![]() |
bonjour,
Pourquoi ne changez vous pas vos requête d'insertion pour que ce cas ne se produise pas ? Vous avez trop de requêtes ? Sinon : http://dev.mysql.com/doc/refman/5.5/en/insert.html Citation:
|
|
|
|
00
|
|
|
#3 | ||
![]() ![]() |
La solution rigoureuse consiste à faire une requête qui cherche quelles lignes vont poser problème.
Une requête du genre : Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#4 | |
|
Invité de passage
![]() Développeur Web Inscription : juin 2011 Messages : 11 ![]() |
Citation:
Sinon je prends note de ta réponse CinePhil merci à toi |
|
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : février 2008 Messages : 73 ![]() |
INSERT IGNORE fonctionne si tu fais une insertion à la fois et pas un gros batch des familles qui te fait tout d'un coups. J'ai eu le même genre de souci et c'est comme cela que j'ai corrigé le tir.
|
|
00
|
Copyright © 2000-2012 - www.developpez.com