Insertion sans doublon

Invité
Invité n'ayant pas de compte PHPfrance

25 févr. 2005, 19:18

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

Eléphant du PHP | 71 Messages

25 févr. 2005, 20:02

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 :wink:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

25 févr. 2005, 20:41

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 ? :?:

Eléphant du PHP | 334 Messages

25 févr. 2005, 20:44

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 :P

Eléphant du PHP | 71 Messages

25 févr. 2005, 21:46

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 ????

Eléphant du PHP | 334 Messages

25 févr. 2005, 21:59

Perso j'y crois pas trop, ça se saurait :P

ViPHP
fab
ViPHP | 2657 Messages

25 févr. 2005, 22:56

pareil :)

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

26 févr. 2005, 01:02

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.