MySQL: ajout de l'année en cours, une valeur par défaut pour un champ "année"
J'ai le tableau suivant dans la base de données MySQL (version 5):
id int(10) UNSIGNED No auto_increment
year varchar(4) latin1_swedish_ci No
title varchar(250) latin1_swedish_ci Yes NULL
body text latin1_swedish_ci Yes NULL
Et je veux la db à l'ajout automatique de l'année en cours lors de l'insertion, j'ai essayé de l'instruction SQL suivante:
ALTER TABLE `tips` CHANGE `year` `year` VARCHAR(4) NOT NULL DEFAULT year(now())
Mais il donne l'erreur suivante:
1067 - Invalid default value for 'year'
Que puis-je faire pour obtenir cette fonctionnalité? Merci à l'avance!
- avoir des colonnes avec le même nom qu'un type de données est généralement une très MAUVAISE idée
Vous devez vous connecter pour publier un commentaire.
-- Manuel MySQL
Vous pouvez, cependant, écrire un déclencheur qui définit la valeur. Je souhaite que je pourrais aider, mais je ne suis pas vraiment familier avec l'écriture de procédures stockées dans MySQL.
Je pense que cela fonctionnerait:
La suivante devrait fonctionner:
Veuillez voir Année Type De Données pour de plus amples informations.
Donc, j'ai testé une fois que j'ai eu et ça ne fonctionne pas. Comme une autre affiche a souligné CURRENT_TIMESTAMP ne fonctionne que sur le TIMESTAMP type de données.
Est-il un problème spécifique avec l'enregistrement complet d'un timbre de temps, puis en utilisant uniquement l'année dans votre code? Si non, alors je vous recommande de stocker une valeur de type timestamp.
Votre autre option serait de créer un déclencheur:
Autrement affecter cette valeur à l'instruction INSERT à partir de votre code.
La meilleure solution dans votre cas dépendra entièrement sur les circonstances entourant votre application particulière.