Baserat på min forskning skulle jag säga att det både kan vara en "du" sak och en "MySQL" sak. Kontrollera dina tabelldefinitioner med SHOW CREATE TABLE table_name;
. Notera alla fält som definieras med NOT NULL
.
MySQL 5.6 Reference Manual:13.2.5 INSERT syntax står:
Detta skulle innebära att det inte spelar någon roll vilket SQL-läge du använder. Om du gör en enkel rad INSERT
(enligt din exempelkod) och infoga en NULL
värde till en kolumn definierad med NOT NULL
, det är inte tänkt att fungera.
I samma andetag, ironiskt nog, om du helt enkelt skulle utelämna värdet från värdelistan, säger MySQL-manualen följande, och SQL-läget spelar roll i det här fallet:
Du kan alltså inte vinna!;-) Skojar. Saken att göra är att acceptera att NOT NULL
på ett MySQL-tabellfält betyder verkligen Jag kommer inte att acceptera ett NULL-värde för ett fält när jag utför en enda rad INSERT
, oavsett SQL-läge .'
Med detta sagt är följande från manualen också sant:
Så ta hjärtat. Ställ in dina standardvärden i affärslogiken (objekt) och låt datalagret ta riktning från det. Databasstandarder verkar vara en bra idé, men om de inte fanns, skulle du missa dem? Om ett träd faller i skogen...