Med hänvisning till manualen ,
För datainmatning för en NOT NULL-kolumn som inte har någon explicit DEFAULT-sats, om en INSERT- eller REPLACE-sats inte innehåller något värde för kolumnen, eller en UPDATE-sats ställer in kolumnen till NULL, hanterar MySQL kolumnen enligt det SQL-läge som gäller vid tidpunkten:
- Om strikt SQL-läge inte är aktiverat ställer MySQL in kolumnen till det implicita standardvärdet för kolumndatatypen.
- Om strikt läge är aktiverat uppstår ett fel för transaktionstabeller och satsen återställs. För icke-transaktionella tabeller uppstår ett
fel, men om detta inträffar för den andra eller efterföljande raden i en flerradssats, kommer de föregående raderna att ha infogats.
Så din fråga nu kan vara, vilka är de implicita standardvärdena för de olika kolumndatatyperna? Varsågod:
Implicita standardvärden definieras enligt följande:
- För numeriska typer är standardvärdet 0, med undantag för att för heltals- eller flyttalstyper som deklareras med AUTO_INCREMENT
attributet är standard nästa värde i sekvensen.- För andra datum- och tidstyper än TIMESTAMP är standardvärdet lämpligt "noll"-värde för typen. För den första TIMESTAMP-kolumnen i en tabell är standardvärdet aktuellt datum och tid. Se avsnitt 10.3, "Datum- och tidstyper".
- För andra strängtyper än ENUM är standardvärdet den tomma strängen. För ENUM är standardvärdet det första uppräkningsvärdet.