sql >> Database >  >> RDS >> Mysql

NULL invoegen in NOT NULL-kolommen met standaardwaarde

Op basis van mijn onderzoek zou ik zeggen dat het zowel een 'jij'-ding als een 'MySQL'-ding kan zijn. Controleer uw tabeldefinities met SHOW CREATE TABLE table_name; . Let op alle velden die zijn gedefinieerd met NOT NULL .

De MySQL 5.6 Referentiehandleiding:13.2.5 INSERT-syntaxis staten:

Dit zou betekenen dat het niet uitmaakt welke SQL-modus u gebruikt. Als je een enkele rij doet INSERT (volgens uw voorbeeldcode) en een NULL . invoegen waarde in een kolom gedefinieerd met NOT NULL , het zou niet moeten werken.

In één adem, ironisch genoeg, als je gewoon de waarde uit de lijst met waarden zou weglaten, zegt de MySQL-handleiding het volgende, en de SQL-modus doet er wel toe in dit geval:

Je kunt dus niet winnen!;-) Grapje. Het ding om te doen is om te accepteren dat NOT NULL op een MySQL-tabelveld betekent echt Ik accepteer geen NULL-waarde voor een veld tijdens het uitvoeren van een enkele rij INSERT , ongeacht de SQL-modus .'

Dat gezegd hebbende, is het volgende uit de handleiding ook waar:

Dus houd moed. Stel uw standaardwaarden in in de bedrijfslogica (objecten) en laat de datalaag daar de leiding over nemen. Standaardinstellingen voor databases lijken een goed idee, maar als ze niet zouden bestaan, zou u ze dan missen? Als er een boom valt in het bos...



  1. postgreSQL mysql orakel verschillen

  2. PHP-wachtrijsysteem met Codeigniter. HOE?

  3. Inleiding tot PostgreSQL

  4. Dieper graven in Django-migraties