web-dev-qa-db-fra.com

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 est par défaut current_timestamp et mises à jour de current_timestamp à chaque mise à jour.

Je souhaite supprimer la fonctionnalité "on update" de cette colonne. Comment écrire l'instruction alter?

J'ai essayé ce qui suit:

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

mais cela n'a pas fonctionné.

54
Tihom

Pete était presque correct mais a utilisé la mauvaise syntaxe pour "changer":

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

Notez que vous devez répéter le nom de la colonne. Assurez-vous également que vous utilisez des guillemets au lieu de guillemets simples pour échapper à l'heure du nom de la colonne, ce qui l'empêche d'être interprété comme le type de temps de la colonne mysql.

En spécifiant le DEFAULT de CURRENT_TIMESTAMP, MySQL ne mettra plus automatiquement à jour la colonne. Depuis le Manuel MySQL :

Avec une clause DEFAULT CURRENT_TIMESTAMP et aucune clause ON UPDATE, la colonne a l'horodatage actuel pour sa valeur par défaut mais n'est pas automatiquement mise à jour.

83
jonstjohn

AFAIK ne peut pas utiliser par défaut des fonctions telles que NOW ().

Essayer

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

(Modifié pour ajouter l'échappement et la deuxième utilisation du nom de champ)

11
Pete