Med henvisning til manualen ,
For dataindtastning for en NOT NULL-kolonne, der ikke har nogen eksplicit DEFAULT-sætning, hvis en INSERT- eller REPLACE-sætning ikke indeholder nogen værdi for kolonnen, eller en UPDATE-sætning sætter kolonnen til NULL, håndterer MySQL kolonnen i overensstemmelse med den SQL-tilstand, der er gældende på det tidspunkt:
- Hvis streng SQL-tilstand ikke er aktiveret, sætter MySQL kolonnen til den implicitte standardværdi for kolonnedatatypen.
- Hvis streng tilstand er aktiveret, opstår der en fejl for transaktionstabeller, og sætningen rulles tilbage. For ikke-transaktionelle tabeller opstår der en
fejl, men hvis dette sker for den anden eller efterfølgende række i en sætning med flere rækker, vil de foregående rækker være blevet indsat.
Så dit spørgsmål kan nu være, hvad er de implicitte standardværdier for de forskellige kolonnedatatyper? Her går du:
Implicitte standardindstillinger er defineret som følger:
- For numeriske typer er standarden 0, med den undtagelse, at for heltals- eller flydende kommatyper, der er erklæret med AUTO_INCREMENT
attributten, er standardværdien den næste værdi i sekvensen. - For andre dato- og tidstyper end TIMESTAMP er standardværdien den passende "nul"-værdi for typen. For den første TIMESTAMP-kolonne i en tabel er standardværdien den aktuelle dato og klokkeslæt. Se afsnit 10.3, "Dato- og tidstyper".
- For andre strengtyper end ENUM er standardværdien den tomme streng. For ENUM er standardværdien den første opregningsværdi.