Construction d'une requête

Construction d'une requête - SQL/NoSQL - Programmation

Marsh Posté le 25-01-2009 à 16:22:38    

Bonjour,
 
Soit la requête suivante :
 
INSERT INTO users (login, fullName, email) VALUES ('".$login."', '".$fullName."', '".$email."');
 
J'aimerai insérer les données utilisateur si et seulement si le login portant le nom toto n'existe pas dans la table.
 
Faut-il que je construise ma requête de la façon suivante ?
 
INSERT INTO users (login, fullName, email) VALUES ('".$login."', '".$fullName."', '".$email."') WHERE NOT EXISTS (select login form users where login='toto');
 
Merci bien

Reply

Marsh Posté le 25-01-2009 à 16:22:38   

Reply

Marsh Posté le 25-01-2009 à 17:35:22    

J'ai essayé :
 
INSERT INTO users (login, fullName, email) VALUES ('".$login."', '".$fullName."', '".$email."')   on duplicate key update login='toto';
 
Mais il m'ajoute toujours une ligne d'enregistrement.

Reply

Marsh Posté le 25-01-2009 à 17:46:39    

Heu il te suffi de mettre une clé "unique" sur ta colonne login et c'est bon


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 25-01-2009 à 18:19:57    

La requête pour passer un identifiant unique à la colonne login est-elle ?
 
alter table user add index ('login');
 
Je suppose que mettre un identifiant unique génère une erreur si l'enregistrement est identique.

Reply

Marsh Posté le 25-01-2009 à 18:32:11    

Bien tenté, mais si tu avais lu la doc, tu serais tombé juste :  
 

Code :
  1. alter table user add unique (`login`)


 
Exactement, ça va pas te laisser l'ajouter. Après tu as différentes manières de le detecter ... Faire un select avant, regarder combien le lignes ont été ajoutées juste après.


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 25-01-2009 à 19:05:44    

esox_ch a écrit :

Bien tenté, mais si tu avais lu la doc, tu serais tombé juste :  

  :)  
 
Merci esox_ch pour ces compléments d'info. et ton entraide.


Message édité par sneakz le 25-01-2009 à 19:06:04
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed