Par défaut, MySQL accepte les valeurs non valides. Vous pouvez définir MySQL en mode strict pour forcer les valeurs valides. Cela rejettera une requête qui ne fournit pas de valeur pour une colonne NOT NULL et appliquera l'intégrité sur tous les types de colonnes.
Mise à jour : MySQL 5.7 et supérieur ont maintenant le mode strict activé par défaut. Ainsi, il n'accepterait pas les valeurs invalides par défaut comme les versions précédentes.
http://dev.mysql .com/doc/refman/5.0/en/sql-mode.html#sql-mode-important
http://dev.mysql.com/doc /refman/5.0/en/sql-mode.html#sqlmode_strict_all_tables
Edit :@Barranka et @RocketHazmat ont fait valoir de bons points dans les commentaires. ''
n'est pas identique à null, donc MySQL l'autorisera dans une colonne NOT NULL. Dans ce cas, vous devrez recourir à votre code ou à un déclencheur.
Dans le code (PHP par exemple), cela pourrait être assez simple, en exécutant quelque chose comme :
if (!strlen($value)) {
// Exclude value or use NULL in query
}