Normalmente lo faresti con il vincolo CHECK:
foo_test VARCHAR(50) NOT NULL CHECK (foo_test <> '')
Prima della versione 8.0 MySQL aveva un supporto limitato per i vincoli. Da Manuale di riferimento di MySQL :
La clausola CHECK viene analizzata ma ignorata da tutti i motori di archiviazione.
Se devi attenerti a una versione precedente, usa trigger come soluzione alternativa, come le persone hanno sottolineato.
In futuro, potresti voler dare un'occhiata a PostgreSQL , che si ritiene abbia un migliore supporto per l'integrità dei dati (tra altre cose ) di molte persone .