Normalement, vous feriez cela avec la contrainte CHECK :
foo_test VARCHAR(50) NOT NULL CHECK (foo_test <> '')
Avant la version 8.0, MySQL avait une prise en charge limitée des contraintes. À partir du Manuel de référence MySQL :
La clause CHECK est analysée mais ignorée par tous les moteurs de stockage.
Si vous devez vous en tenir à une ancienne version, utilisez des triggers comme solution de contournement, comme les gens l'ont souligné.
À l'avenir, vous voudrez peut-être jeter un œil à PostgreSQL , qui est considéré comme ayant un meilleur support pour l'intégrité des données (parmi autres choses ) par de nombreuses personnes .