El campo de la variable sale NULL porque debe inicializarse primero la variable:
Una variable de usuario (en MySQL son las que tienen una arroba), tiene valor inicial NULL, y toda operación con NULL da NULL.
En tu caso se requiere, para una columna decremental, como te dije, dos querys al menos:
Como dije, es posible, pero por más que te parezca una buena idea, es una muy, pero muy mala idea hacer cosas en la base que no son su responsabilidad.
Si empiezas a romper el encapsulamiento de la base y la aplicación, generaras un exceso de acoplamiento, nocivo, que tarde o temprano deberás revertir o te causará problemas severos.
Desde el punto de vista de BBDD es un error, y desde el análisis de sistemas también.
Es tu decisión. Yo no te lo aconsejo.