Eviter les doublons à l'insertion [Résolu]

Signaler
Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
28 août 2007
-
cs_spyro666
Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
28 août 2007
-
Bonjour tout le monde,

j'ai un petit problème avec MySQL... J'ai en effet une table que j'ai créé pour qu'il n'y ait pas deux fois la même valeur pour un enregistrement, seulement la manière dont je fais mes insertions  ne me permet pas de savoir si cette insertion existe ou non. Personnellement je pensais faire un petit test en MySQL directement mais ça n'a pas l'air de marcher. Voilà ce que j'essaie :

IF NOT EXISTS (SELECT * FROM `ma_table` WHERE `ma_colonne` = 'ma valeur')
BEGIN
INSERT INTO `ma_table` (`ma_colonne`) VALUES ('ma valeur');
END

Quelqu'un aurait une idée sachant que la machine sur laquelle je travaille ne supporte pas beaucoups de tests à la suite.

Merci d'avance.

Spyro666 contre le 555

9 réponses

Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
Salut,
il suffit rajouter IGNORE après le INSERT et ça ignorera toutes les requêtes qui feraient des doublons par rapport une clé primaire ou unique. Reste à  créer une clé primaire ou unique sur les champs que tu veux.
à+

ps : http://dev.mysql.com/doc/refman/5.0/fr/insert.html
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Salut!
Tu peux faire un DELETE et un INSERT juste après... Si l'enregistrement n'existe pas, le DELETE n'aura pas d'effet...

@++

R@f

Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
28 août 2007

Bonne idée mais ça ne risque pas de ralentir passablement mon serveur?

Spyro666 contre le 555
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
C'est sûr que c'est pas top, mais je sais pas si c forcément plus lent qu'un SELECT...

Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
28 août 2007

Ok, je garde cette solution. Merci beaucoup!

Spyro666 contre le 555
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
12
J'avais preske la réponse..

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

Ca te permet en plus de faire un update.. au cas ou.. c'est utile non ??

S.
Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
28 août 2007

Non puisque en fait ce que j'insère ce sont des mots pour un pendu en php et c'est le mot qui est unique du coup une mise à jour de la manière d'écrire le mot n'aurait aucun sens vu qu'elle est censée être tout le temps la même ;)

Spyro666 contre le 555
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
12
Ben si on me dit tout en deux fois, c'est po étonnant ke je donne des mauvaises réponses !! LOL !!

En tout tu noteras la réactivité de toute la petite communauté ici..

Bonne journée.

S.
Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
28 août 2007

Bon je vais faire une petite notation générale.

Note générale pour la communauté :
Rapidité de réponse : 2 min : S
Pertinence des réponses : 90 % (toutes les soluces me permettaient de venir à bout de mon problème) : A
Temps jusqu'à la bonne réponse : 1h30 : S

Note générale : A+

Spyro666 contre le 555