05-01-2015, 12:50 AM
(05-01-2015, 12:25 AM)julp a écrit : En fait, avec MySQL ce n'est pas gagné :
- pas de contrainte CHECK, parce que c'est là, au minimum, qu'il aurait fallu la mettre en place (sinon il faut l'écrire soi-même via un trigger en before insert/update qui lève une erreur)
Au moins, avec PostgreSQL, unsigned n'existe pas et check est implémenté.
- si tu mets ta colonne en UNSIGNED, a priori, une valeur négative finit en 0 avec un simple warning (out of range)
Je ne suis vraiment pas convaincu par abs non plus : ça signifie que tu acceptes les valeurs négatives en entrée et que tu te retrouves en sortie avec une valeur positive. Niveau documentation, je pense qu'on a vu mieux. filter_var me paraît bien plus adapté aussi.
De toute façon, je n'ai jamais dis que c'était une solution globale satisfaisante, et malheureusement on ne peut pas vraiment dire "accepter les valeurs négatives en entrée". L'utilisateur passera sans difficulté les contrôles HTML et autres joyeusetés javascript.
Tout est question de point de vue. C'est ni forcément une bonne solution, ni une bonne solution. En tout cas, dans tout un tas de cas elle remplie parfaitement son rôle.