Page 1 sur 1
Insertion sans doublon
Posté : 25 févr. 2005, 19:18
par Invité
Bonjour à tous
Existe t-il une fonction ou un moyen sur MySql qui permette de vérifier automatiquement avant ajout qu'une valeur n'apparait pas déjà dans la base? comme un retour d'erreur qui me permettrait d'agir en consequence, par exemple?
Pour l'instant, j'effectue une requète sql préalable (select.... > mysql_count_result) mais je me demandais si ce n'était pas possible de l'éviter.
Merci d'avance
Posté : 25 févr. 2005, 20:02
par renan44
Cette question m'intéresse aussi, car c'et vrai que le select que j'utilise également au préalable pour la verification n'est pas franchement pratique...
Maintenant, est ce qu'il y a vraiment une focntion, bonne question
J'attends vos réponses aussi

Posté : 25 févr. 2005, 20:41
par ouckileou
ben si tu tentes d'insérer un tuple qui va créer un doublon de clé primaire, le sgbd va renvoyer une erreur donc on peut tester cette erreur
maintenant sur un autre champ je ne sais pas
mais pourquoi vous n'aimez pas le petit "select count(*)" avant ?

Posté : 25 févr. 2005, 20:44
par Jerem'
Parce que c'est une requete supplémentaire pour la base
A petit niveau c'est pas grave mais sur une base à forte audience ça peut ralentir un peu.
Mais bon moi je select count(*) sans complexe aussi lol

Posté : 25 févr. 2005, 21:46
par renan44
C'est pas que ça me gène, mais bon, s'y on aurait pu s'en passer pour une focntion direct, pourquoi s'en priver ????
Posté : 25 févr. 2005, 21:59
par Jerem'
Perso j'y crois pas trop, ça se saurait

Posté : 25 févr. 2005, 22:56
par fab
pareil

Posté : 26 févr. 2005, 01:02
par Hubert Roksor
Et pourquoi pas un index UNIQUE ? si vous n'avez pas envie de gérer les warnings MySQL je pense qu'avec un INSERT IGNORE INTO pour insérer et un mysql_affected_rows() vous arrivez plus ou moins au même: -1 = erreur, 0 = doublon, 1 = insertion.