Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Einfügen von NULL in NOT NULL-Spalten mit Standardwert

Basierend auf meinen Recherchen würde ich sagen, dass es sowohl eine "Du"-Sache als auch eine "MySQL"-Sache sein könnte. Überprüfen Sie Ihre Tabellendefinitionen mit SHOW CREATE TABLE table_name; . Beachten Sie alle Felder, die mit NOT NULL definiert sind .

Das MySQL 5.6 Referenzhandbuch:13.2.5 INSERT-Syntax Zustände:

Dies würde bedeuten, dass es keine Rolle spielt, welchen SQL-Modus Sie verwenden. Wenn Sie eine einzelne Reihe machen INSERT (gemäß Ihrem Beispielcode) und Einfügen eines NULL Wert in eine mit NOT NULL definierte Spalte , es soll nicht funktionieren.

Im gleichen Atemzug, ironischerweise, wenn Sie den Wert einfach aus der Werteliste weglassen würden, sagt das MySQL-Handbuch Folgendes, und der SQL-Modus spielt eine Rolle in diesem Fall:

Sie können also nicht gewinnen!;-) Scherzhaft. Die Sache, die Sie tun müssen, ist, diesen NOT NULL zu akzeptieren auf einem MySQL-Tabellenfeld bedeutet wirklich Ich akzeptiere keinen NULL-Wert für ein Feld, während ich eine einzelne Zeile INSERT ausführe , unabhängig vom SQL-Modus .'

Abgesehen davon gilt auch Folgendes aus dem Handbuch:

Also fassen Sie sich ein Herz. Legen Sie Ihre Standardeinstellungen in der Geschäftslogik (Objekte) fest und überlassen Sie der Datenschicht die Richtung. Datenbank-Standardwerte scheinen eine gute Idee zu sein, aber wenn es sie nicht gäbe, würden Sie sie vermissen? Wenn im Wald ein Baum umfällt...