Normalmente lo haría con la restricción CHECK:
foo_test VARCHAR(50) NOT NULL CHECK (foo_test <> '')
Antes de la versión 8.0, MySQL tenía un soporte limitado para las restricciones. Del Manual de referencia de MySQL :
La cláusula CHECK es analizada pero ignorada por todos los motores de almacenamiento.
Si debe ceñirse a una versión anterior, use triggers como una solución alternativa, como la gente ha señalado.
En el futuro, es posible que desee echar un vistazo a PostgreSQL , que se considera que tiene un mejor soporte para la integridad de datos (entre otras cosas ) por muchas personas .