Mysql - depassement du type

WRInaute occasionnel
Salut,

J'ai un champs tinyint en unsigned, donc valeur de 0 à 255.

je decremente ce champ avec :

UPDATE table SET champs=champs-1

Si la valeur arrive à zero, au lieu de rester à zero, lorsque je refais un update, ca repart à 255

Ce qui me surprend c'est que ca ne le fais pas sur mon serveur local.

Y une config pour que ca reste à zero ?
 
WRInaute discret
en effet, étrange comme comportement
vérifie quand même la valeur de ton champ, pour connaitre sa valeur.
à ma connaissance, pas d'option pour que ca reste à 0 vu que ca doit rester à 0
petite question : pourquoi décrémentes-tu un champ de ta base de données ?
 
WRInaute impliqué
en effet curieux
je te conseillerais plutôt de faire ceci :

UPDATE table SET champ = if(champ > 0, champ-1, 0)
 
WRInaute occasionnel
jarreweb, c'est pour gerer mon stock.

Ok julien, c'est domage de faire un test quand normalement y a pas besoin, mais bon, la je seche et je n'ai pas envie de passer 10h dessus!

Merci
 
WRInaute impliqué
Ceci dit, si mySql respectait bien les types "0-1" ne devrait même pas être exécuté.

Tu règles le problèmes avec un trigger (si la version de mysql te le permet) comme cela, tout sera transparent dans tes programmes.
 
Discussions similaires
Haut