Verwijzend naar de handleiding ,
Voor gegevensinvoer voor een NOT NULL-kolom die geen expliciete DEFAULT-clausule heeft, als een INSERT- of REPLACE-instructie geen waarde voor de kolom bevat, of als een UPDATE-instructie de kolom instelt op NULL, behandelt MySQL de kolom volgens de SQL-modus die op dat moment van kracht is:
- Als de strikte SQL-modus niet is ingeschakeld, stelt MySQL de kolom in op de impliciete standaardwaarde voor het kolomgegevenstype.
- Als de strikte modus is ingeschakeld, treedt er een fout op voor transactietabellen en wordt de instructie teruggedraaid. Voor niet-transactionele tabellen treedt een
fout op, maar als dit gebeurt voor de tweede of volgende rij van een instructie met meerdere rijen, zijn de voorgaande rijen ingevoegd.
Dus uw vraag kan nu zijn:wat zijn de impliciete standaardwaarden voor de verschillende kolomgegevenstypen? Hier ga je:
Impliciete standaardwaarden worden als volgt gedefinieerd:
- Voor numerieke typen is de standaardwaarde 0, behalve dat voor typen gehele getallen of drijvende-komma's die zijn gedeclareerd met het kenmerk AUTO_INCREMENT
de standaard de volgende waarde in de reeks is.- Voor andere datum- en tijdtypen dan TIMESTAMP is de standaardwaarde de juiste "nul"-waarde voor het type. Voor de eerste TIMESTAMP-kolom in een tabel is de standaardwaarde de huidige datum en tijd. Zie Paragraaf 10.3, “Typen datum en tijd”.
- Voor andere typen tekenreeksen dan ENUM is de standaardwaarde de lege tekenreeks. Voor ENUM is de standaardwaarde de eerste opsommingswaarde.