Je viens de remarquer un comportement sur mysql. Quand j'éxécute la requètes :
UPDATE MY_TABLE SET MY_UNSIGNED=MY_UNSIGNED-1 WHERE MY_UNSIGNED=0
Les lignes de MY_TABLE étant au préalable à 0 valent alors la limite du champs (Exemple : 65535 pour un SMALLINT(UNSIGNED)).
Pour solutionner ce comportement il suffit de lance la commande suivante avant de lancer la requête.
set session sql_mode = 'NO_UNSIGNED_SUBTRACTION';