2009-05-09 8 views
3

J'utilise la dernière version de MySQL et j'ai essayé de modifier une table pour utiliser curtime() ou now() ou current_timestamp comme valeur par défaut pour une colonne datetime (created_at, updated_at). Pour les trois, l'alter a échoué, indiquant que ce sont des valeurs par défaut non valides. Des idées quelle est la valeur par défaut appropriée pour générer l'heure actuelle dans un champ datetime?Je pensais que curtime(), now() et current_timestamp sont des valeurs de date-heure par défaut valides dans MySQL?

ALTER TABLE `music_library_development`.`albums` 
MODIFY COLUMN `created_at` DATETIME NOT NULL DEFAULT current_timestamp, 
MODIFY COLUMN `updated_at` DATETIME NOT NULL DEFAULT current_timestamp; 

ALTER TABLE `music_library_development`.`albums` 
MODIFY COLUMN `created_at` DATETIME NOT NULL DEFAULT now(), 
MODIFY COLUMN `updated_at` DATETIME NOT NULL DEFAULT now(); 

ALTER TABLE `music_library_development`.`albums` 
MODIFY COLUMN `created_at` DATETIME NOT NULL DEFAULT curtime(), 
MODIFY COLUMN `updated_at` DATETIME NOT NULL DEFAULT curtime(); 

Répondre

1

Essayez d'utiliser le type de colonne TIMESTAMP:

MODIFY COLUMN `updated_at` TIMESTAMP NOT NULL DEFAULT current_timestamp; 
+0

Je viens essayé. Il indique qu'il ne peut y avoir qu'une seule colonne timestamp avec un ensemble de valeurs par défaut. –

+0

Oui, vous ne pouvez pas avoir plusieurs colonnes mises à jour automatiquement. Cela a été abordé sur une autre question, mais je ne peux pas le trouver. –

+0

Mais cela n'a pas été fait, car la plupart des enregistrements audités auront des champs created_at et updated_at dont la valeur est définie lors de la création de l'enregistrement – Prasad

0

alter table music_library_development changer CURRENT_TIMESTAMP DEFAULT created_at created_at TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

alter table music_library_development changer updated_at updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP MISE À JOUR SUR CURRENT_TIMESTAMP