63 votes

Une table Mysql avec plusieurs colonnes TIMESTAMP

Je veux avoir une table, deux TIMESTAMP colonnes. Une colonne de garder une trace de quand le dossier a été créé et un autre pour garder une trace de quand il a été modifié. Je veux que ces valeurs gérées par la base de données. Je ne veux pas que mon application de la couche à avoir à y penser.

Je sais que si vous avez un TIMESTAMP colonne DEFAULT CURRENT_TIMESTAMP ou ON UPDATE CURRENT_TIMESTAMP vous ne pouvez pas avoir un autre TIMESTAMP colonne. Vous pouvez utiliser DATETIME , mais il n'y a aucun moyen de défaut, que je sache, à l'extérieur d'un déclencheur.

J'ai trouvé que vous pouvez avoir plusieurs TIMESTAMP colonnes en laissant à chaque sans DEFAULT ou ON UPDATE et en insérant NULL lorsque l'enregistrement est créé, provoquant de chacun pour avoir le timestamp actuel. À partir de ce point sur la première colonne sera automatiquement mis à jour.

Cela fonctionne fantastiquement mais il me laisse une drôle de sensation. Comme cela peut-être un bug et il pourrait être modifié à tout moment. Si c'est la façon dont il est censé travailler, alors ainsi soit-il. Je vais aller gaiement sur mon chemin. Quelqu'un peut me dire si c'est la meilleure façon de le faire ou dois-je utiliser les déclencheurs?

39voto

Marc B Points 195501

C'est documenté dans la documentation MySQL:

En outre, vous pouvez initialiser ou mettre à jour une colonne TIMESTAMP à la date et à l'heure actuelles en lui attribuant une valeur NULL , sauf si elle a été définie avec l'attribut NULL pour autoriser les valeurs NULL.

http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html

39voto

Santosh Achari Points 406

Les versions de MySQL antérieures à la 5.6.1 ne permettraient pas de placer deux colonnes TIMESTAMP dans la même table, à moins que vous n'ayez correctement indiqué de ne pas utiliser de valeurs par défaut et d'autoriser null.

MySQL 5.6. + Autorise au moins deux colonnes TIMESTAMP dans une table.

Plus ici: http://shankargopal.blogspot.in/2013/03/mysql-566-timestamp-columns-and-default.html

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