59 votes

Comment puis-je modifier les valeurs par défaut d'une colonne de table mysql?

J'ai une table avec une colonne de type timestamp qui utilise par défaut current_timestamp et qui se met à jour à current_timestamp à chaque mise à jour.

Je souhaite supprimer la fonctionnalité "on update" de cette colonne. Comment puis-je écrire la déclaration alter?

J'ai essayé ce qui suit:

 ALTER TABLE mytable alter column time  set DEFAULT now();
 

mais cela n'a pas fonctionné.

merci dans l'adavance.

90voto

jonstjohn Points 23326

Pete était presque correct, mais utilisé de la mauvaise syntaxe pour "modifier":

ALTER TABLE mytable CHANGE `time` `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

Notez que vous devez répéter le nom de la colonne. Aussi, assurez-vous d'utiliser backticks au lieu de guillemets simples pour échapper le nom de la colonne temps, ce qui l'empêche d'être interprétée comme la base de la colonne type de temps.

En spécifiant la valeur par DÉFAUT de CURRENT_TIMESTAMP, MySQL n'est plus automatiquement à jour la colonne. À partir du Manuel MySQL:

Avec une valeur par DÉFAUT CURRENT_TIMESTAMP clause et non SUR la clause de mise à JOUR, la colonne a le timestamp actuel pour sa valeur par défaut, mais n'est pas automatiquement mis à jour.

12voto

Pete Points 1394

Vous ne pouvez pas, autant que je sache, utiliser des fonctions telles que NOW () par défaut.

Essayer

 ALTER TABLE `mytable` CHANGE `time` `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
 

(Édité pour ajouter un échappement et une deuxième utilisation du nom de champ)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X