Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/08/2011, 20h56   #1
Membre du Club
 
Inscription : avril 2011
Messages : 32
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 32
Points : 67
Points : 67
Par défaut [update conditionel] Comment updater une table selon un select ?

Bonjour à tous,

j'ai une table utilisateur, avec user_name(char var), et user_valid(boolean)
j'ai une autre table qui contient des clés de validation

key_value(char var), key_valid(boolean)

J'aimerais mettre user_valid à true, et la clé à false si la clé est à true.

Donc j'ai fait

Code :
1
2
 
UPDATE users SET user_valid = (SELECT key_valid FROM KEY WHERE key_value = 'b428f1e4c0e27f1f281c8a9c62099' AND key_valid = true) WHERE user_id = 19
Le problème c'est qu'il faut que je sache si l'utilisateur a été validé ou non. Or la requête principale renvoie toujours 1, en effet elle considère qu'elle a bien mis le champ à jour, même si le champ est passé de false à false.

Ce qui est normal. Mais j'aimerais trouver une solution. C'est dans un environnement concurrentiel.
jv-boy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2011, 22h05   #2
Membre du Club
 
Inscription : avril 2011
Messages : 32
Détails du profil
Informations forums :
Inscription : avril 2011
Messages : 32
Points : 67
Points : 67
Bon la solution que j'ai décidée :

Je fais un update de la première table et j'invalide la clé.
Code :
UPDATE KEY SET key_valid = false WHERE key_value='b428f1e4c0e27f1f281c8a9c62099' AND key_valid = true
Si ça me renvoie 1, c'est que la clé était à false, donc inutilisée, et là je peux valider l'utilisateur.

Si l'update me renvoie 0, c'est que la clé était déjà à false, donc invalide.
jv-boy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h15.


 
 
 
 
Partenaires

Hébergement Web