Page 1 sur 1

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

Posté : 09 mars 2011, 16:56
par jacfev
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.

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

Posté : 09 mars 2011, 17:39
par ouckileou
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

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

Posté : 09 mars 2011, 22:13
par jacfev
ALTER TABLE inscrits ADD UNIQUE INDEX(client_id)
qui empêchera d'insérer 2 fois le même champ.
c'est ça ?

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

Posté : 09 mars 2011, 23:40
par AB
oui

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

Posté : 10 mars 2011, 02:44
par devlop78
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.