Normalt skulle du göra det med CHECK-begränsning:
foo_test VARCHAR(50) NOT NULL CHECK (foo_test <> '')
Före version 8.0 hade MySQL begränsat stöd för begränsningar. Från MySQL Reference Manual :
CHECK-satsen tolkas men ignoreras av alla lagringsmotorer.
Om du måste hålla dig till en gammal version, använd triggers som en lösning, som folk har påpekat.
I framtiden kanske du vill ta en titt på PostgreSQL , som anses ha bättre stöd för dataintegritet (bland andra saker ) av många människor .