Insérer champ s'il n'existe pas déjà

Eléphant du PHP | 65 Messages

09 mars 2011, 16:56

reBonjour,

Je récupère le champ codeclient dans la table devis pour lequel le champ id=1.

J'insère ce champ codeclient dans le champ client_id de la table inscrits seulement s'il n'y est pas déjà écrit.

Ma requête (foireuse) :
INSERT INTO inscrits (client_id) SELECT codeclient FROM devis WHERE id=1 IF (SELECT client_id FROM inscrits WHERE NOT (client_id = 'c1'));
où est l'erreur ?

Cordialement
Jac.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

09 mars 2011, 17:39

c'est quoi le probleme, tu n'as pas un message d'erreur en retour ?

Pour gerer ce type de cas tu peux mettre ta colonne en UNIQUE, plutot que de faire de select en sous-requete a chaque insert

Eléphant du PHP | 65 Messages

09 mars 2011, 22:13

ALTER TABLE inscrits ADD UNIQUE INDEX(client_id)
qui empêchera d'insérer 2 fois le même champ.
c'est ça ?

ViPHP
AB
ViPHP | 5818 Messages

09 mars 2011, 23:40

oui

devlop78
Invité n'ayant pas de compte PHPfrance

10 mars 2011, 02:44

Tu peux ensuite utiliser IGNORE pour ne pas avoir d'erreur MySQL si la contrainte UNIQUE est violée mais quand même attraper les exceptions dues à une impossibilité d'executer le code.