デフォルトでは、MySQLは無効な値を受け入れます。 MySQLをstrictモードに設定して、有効な値を強制することができます。これにより、NOT NULL列の値を提供しないクエリが拒否され、すべてのタイプの列に整合性が適用されます。
更新: MySQL 5.7以降では、デフォルトで厳密モードがオンになっています。したがって、以前のバージョンのように、デフォルトでは無効な値を受け入れません。
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
編集:@Barrankaと@RocketHazmatはコメントで良い点を述べました。 ''
nullと同じではないため、MySQLはNOTNULL列でそれを許可します。その場合、コードまたはトリガーに頼る必要があります。
コード(たとえばPHP)では、これは十分に簡単で、次のように実行できます。
if (!strlen($value)) {
// Exclude value or use NULL in query
}