S odkazem na příručku ,
Pro zadávání dat pro sloupec NOT NULL, který nemá explicitní klauzuli DEFAULT, pokud příkaz INSERT nebo REPLACE neobsahuje žádnou hodnotu pro sloupec nebo příkaz UPDATE nastaví sloupec na hodnotu NULL, MySQL zpracuje sloupec podle režimu SQL platného v danou chvíli:
- Pokud není povolen přísný režim SQL, MySQL nastaví sloupec na implicitní výchozí hodnotu pro datový typ sloupce.
- Pokud je povolen přísný režim, dojde u transakčních tabulek k chybě a příkaz bude vrácen. U netransakčních tabulek dojde k
chybě, ale pokud k tomu dojde u druhého nebo následujícího řádku víceřádkového příkazu, budou vloženy předchozí řádky.
Vaše otázka nyní může znít, jaké jsou implicitní výchozí hodnoty pro různé typy dat sloupců? Tady to je:
Implicitní výchozí hodnoty jsou definovány následovně:
- Pro číselné typy je výchozí hodnotou 0, s tou výjimkou, že pro celočíselné typy nebo typy s plovoucí desetinnou čárkou deklarované s atributem AUTO_INCREMENT
je výchozí hodnotou další hodnota v pořadí.- Pro jiné typy data a času než TIMESTAMP je výchozí hodnotou příslušná „nulová“ hodnota pro daný typ. Pro první sloupec TIMESTAMP v tabulce je výchozí hodnotou aktuální datum a čas. Viz část 10.3 – „Typy data a času“.
- Pro jiné typy řetězců než ENUM je výchozí hodnotou prázdný řetězec. Pro ENUM je výchozí hodnotou první hodnota výčtu.