Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
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 03/01/2008, 14h24   #1
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 330
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 330
Points : 1 659
Points : 1 659
Par défaut décrémenter la valeur d'un champ mais bloquer à zero

Bonjour,

j'ai un champ numérique que je décrémente d'un montant non fixe (-5, -6 etc...) et il faudrait que si par exemple la valeur du champ est égal à 2 et que je décrémente de 5 (2 - 5 = -3) la valeur se bloque à zero et non en négatif.

Est ce possible de faire cela directement dans la requete ?
Vu que je ne connais pas la valeur de ce champ à l'avance je ne peux pas comparer directement dans mon appli, sinon cela m'obligerai à executer une requete supplementaire pour recupérer cette valeur.
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 14h46   #2
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 330
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 330
Points : 1 659
Points : 1 659
Probleme résolu en utilisant la fonction mysql GREATEST((`champ`-valeur), 0)
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 14h47   #3
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 983
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 983
Points : 3 568
Points : 3 568
Déjà tu peux rendre ce champ unsigned, ce qui signifie que les valeurs négatives ne peut être accepté mais sur quel version de Mysql es-tu. Si tu es déjà sur la version 5, tu peux placer un trigger qui dit que si la valeur est inférieur à zero elle faut zero.

Code :
1
2
3
IF old.monChamp<0 THEN
 new.monChamp = 0;
END IF;
Attention, ce code n'est qu'un bout de la syntaxe des triggers.
Edit : Bon ben tu as trouvé encore plus simple
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 15h49   #4
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 330
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 330
Points : 1 659
Points : 1 659
je suis en version 4.1 :/
et le champ peut aussi etre négatif mais seulement sous certaines conditions, et il ne peut pas l'etre lors d'une décrémentation
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 16h03   #5
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 983
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 983
Points : 3 568
Points : 3 568
Donc, en effet, la seul solution propre est l'utilisation de la fonction GREATEST
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united 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 13h51.


 
 
 
 
Partenaires

Hébergement Web