Problèmes de valeur de date par défaut avec CURRENT_DATE/CURDATE()
Dans le monde MySQL, vous pouvez rencontrer une question apparemment simple : pourquoi t CURRENT_DATE ou CURDATE() fonctionne comme valeur par défaut pour un DATE
L'énigme : pourquoi ça ne marche pas ?
Comme on peut s'y attendre, ce code devrait fonctionner sans problème :
Cependant, à notre grande surprise, ce n'est pas le cas. Quelle est la raison de cette énigme ?
La réponse : une limitation de MySQL
La réponse réside dans une limitation de MySQL. Bien que cela soit intuitif, définir la valeur par défaut d'une colonne DATE sur CURRENT_DATE ou CURDATE() n'est pas pris en charge.
Selon la documentation MySQL, les valeurs par défaut doivent être des constantes plutôt que des fonctions ou des expressions. Cela élimine la possibilité d'utiliser ces fonctions pour définir dynamiquement des dates par défaut.
L'exception : CURRENT_TIMESTAMP
L'exception à cette règle est CURRENT_TIMESTAMP. Cette fonction peut être définie comme valeur par défaut pour une colonne TIMESTAMP. Cependant, il est important de noter qu'il représente le moment actuel, et non une date spécifique.
MISE À JOUR : Dans MySQL 8.0.13, il y a eu un changement important. CURRENT_DATE et CURDATE() sont désormais pris en charge comme valeurs par défaut pour les colonnes DATE. Cette mise à jour corrige la limitation évoquée dans cet article.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!