Se référant au manuel ,
Pour la saisie de données pour une colonne NOT NULL qui n'a pas de clause DEFAULT explicite, si une instruction INSERT ou REPLACE n'inclut aucune valeur pour la colonne, ou si une instruction UPDATE définit la colonne sur NULL, MySQL gère la colonne selon le mode SQL en vigueur à ce moment :
- Si le mode SQL strict n'est pas activé, MySQL définit la colonne sur la valeur par défaut implicite pour le type de données de la colonne.
- Si le mode strict est activé, une erreur se produit pour les tables transactionnelles et l'instruction est annulée. Pour les tables non transactionnelles, une
erreur se produit, mais si cela se produit pour la deuxième ligne ou la ligne suivante d'une instruction à plusieurs lignes, les lignes précédentes auront été insérées.
Donc, votre question peut maintenant être, quelles sont les valeurs par défaut implicites pour les différents types de données de colonne ? Voilà :
Les valeurs par défaut implicites sont définies comme suit :
- Pour les types numériques, la valeur par défaut est 0, à l'exception que pour les types entiers ou à virgule flottante déclarés avec l'attribut AUTO_INCREMENT
, la valeur par défaut est la valeur suivante dans la séquence.- Pour les types de date et d'heure autres que TIMESTAMP, la valeur par défaut est la valeur "zéro" appropriée pour le type. Pour la première colonne TIMESTAMP d'une table, la valeur par défaut est la date et l'heure actuelles. Voir Section 10.3, « Types de date et d'heure ».
- Pour les types de chaîne autres que ENUM, la valeur par défaut est la chaîne vide. Pour ENUM, la valeur par défaut est la première valeur d'énumération.