Normalnie zrobiłbyś to z ograniczeniem CHECK:
foo_test VARCHAR(50) NOT NULL CHECK (foo_test <> '')
Przed wersją 8.0 MySQL miał ograniczoną obsługę ograniczeń. Z Podręcznika MySQL :
Klauzula CHECK jest analizowana, ale ignorowana przez wszystkie silniki pamięci masowej.
Jeśli musisz trzymać się starej wersji, użyj wyzwalaczy jako obejście, jak zauważyli ludzie.
W przyszłości możesz przyjrzeć się PostgreSQL , który jest uważany za lepiej obsługujący integralność danych (wśród inne rzeczy ) wiele osób .