Som standard accepterar MySQL ogiltiga värden. Du kan ställa in MySQL till strikt läge för att tvinga fram giltiga värden. Detta kommer att avvisa en fråga som inte tillhandahåller ett värde för en NOT NULL-kolumn, samt upprätthålla integritet på alla typer av kolumner.
Uppdatering: MySQL 5.7 och senare har nu strikt läge på som standard. Så det skulle inte acceptera ogiltiga värden som standard som tidigare versioner.
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 och @RocketHazmat gjorde bra poäng i kommentarerna. ''
är inte detsamma som null, så MySQL tillåter det i en NOT NULL-kolumn. I det fallet måste du tillgripa din kod eller en trigger.
I koden (PHP till exempel) kan detta vara enkelt nog att köra något som:
if (!strlen($value)) {
// Exclude value or use NULL in query
}