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

Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Dernière intervention
28 août 2007
- 5 sept. 2006 à 09:39 - Dernière réponse :
Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Dernière intervention
28 août 2007
- 5 sept. 2006 à 19:04
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
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
1982
Date d'inscription
dimanche 20 février 2005
Dernière intervention
24 septembre 2012
- 5 sept. 2006 à 11:13
3
Merci
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

Merci Evangun 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de Evangun
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Dernière intervention
13 septembre 2013
- 5 sept. 2006 à 09:41
0
Merci
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

Commenter la réponse de coockiesch
Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Dernière intervention
28 août 2007
- 5 sept. 2006 à 10:12
0
Merci
Bonne idée mais ça ne risque pas de ralentir passablement mon serveur?

Spyro666 contre le 555
Commenter la réponse de cs_spyro666
Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Dernière intervention
13 septembre 2013
- 5 sept. 2006 à 10:19
0
Merci
C'est sûr que c'est pas top, mais je sais pas si c forcément plus lent qu'un SELECT...

Commenter la réponse de coockiesch
Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Dernière intervention
28 août 2007
- 5 sept. 2006 à 10:21
0
Merci
Ok, je garde cette solution. Merci beaucoup!

Spyro666 contre le 555
Commenter la réponse de cs_spyro666
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Dernière intervention
29 décembre 2012
- 5 sept. 2006 à 13:21
0
Merci
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.
Commenter la réponse de syndrael
Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Dernière intervention
28 août 2007
- 5 sept. 2006 à 14:54
0
Merci
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
Commenter la réponse de cs_spyro666
Messages postés
2382
Date d'inscription
lundi 4 février 2002
Dernière intervention
29 décembre 2012
- 5 sept. 2006 à 15:32
0
Merci
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.
Commenter la réponse de syndrael
Messages postés
137
Date d'inscription
lundi 10 janvier 2005
Dernière intervention
28 août 2007
- 5 sept. 2006 à 19:04
0
Merci
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
Commenter la réponse de cs_spyro666

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.