Underflow en enteros sin signo en MySQL 5 y 5.1
Si actualizas a la versión 5 ó 5.1 de MySQL tienes que tener cuidado con los underflow en los campos integer unsigned que puedas tener, ya que en caso de realizar una operación aritmética que produzca un número negativo, no se quedará en 0 sino que hará underflow.
Para solucionar esto hay que establecer el SQL_MODE a NO_UNSIGNED_SUBTRATION y asi evitar este comportamiento y dejarlo en 0 en caso de restar más de la cuenta.
mysql> SELECT CAST(0 AS UNSIGNED) - 1;
+-------------------------+
| CAST(0 AS UNSIGNED) - 1 |
+-------------------------+
| 18446744073709551615 |
+-------------------------+
Para solucionar esto hay que establecer el SQL_MODE a NO_UNSIGNED_SUBTRATION y asi evitar este comportamiento y dejarlo en 0 en caso de restar más de la cuenta.
mysql> SET SQL_MODE = 'NO_UNSIGNED_SUBTRACTION';
mysql> SELECT CAST(0 AS UNSIGNED) - 1;
+-------------------------+
| CAST(0 AS UNSIGNED) - 1 |
+-------------------------+
| -1 |
+-------------------------+