Per impostazione predefinita, MySQL accetta valori non validi. Puoi impostare MySQL in modalità rigorosa per forzare valori validi. Ciò rifiuterà una query che non fornisce un valore per una colonna NOT NULL e imporrà l'integrità su tutti i tipi di colonne.
Aggiornamento: MySQL 5.7 e versioni successive ora hanno la modalità rigorosa attiva per impostazione predefinita. Quindi non accetterebbe valori non validi per impostazione predefinita come le versioni precedenti.
http://dev.mysql .com/doc/refman/5.0/en/sql-mode.html#sql-mode-importante
http://dev.mysql.com/doc /refman/5.0/en/sql-mode.html#sqlmode_strict_all_tables
Modifica:@Barranka e @RocketHazmat hanno espresso buoni punti nei commenti. ''
non è uguale a null, quindi MySQL lo consentirà in una colonna NOT NULL. In tal caso, dovresti ricorrere al tuo codice o a un trigger.
Nel codice (ad esempio PHP), questo potrebbe essere abbastanza semplice, eseguendo qualcosa come:
if (!strlen($value)) {
// Exclude value or use NULL in query
}