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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Insérer champ s'il n'existe pas déjà

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

par devlop78 » 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.

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

par AB » 09 mars 2011, 23:40

oui

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

par jacfev » 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 ?

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

par ouckileou » 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

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

par jacfev » 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.