I have seen a lot of related questions, but I cannot place my finger on this specific question:
I have a MySQL table with both a TIMESTAMP (for when the field was create
Look my picture.
Set column Filed Type timestamp, Attributes on Update CURRENT_TIMESTAMP & Extra also . No problem after changed the filed type in Database, in my case . But not sure for all case.
MySQL does not allow functions to be used for default DateTime
values. (See MySQL Data Type Defaults.)
INSERT and UPDATE date/time automatically
Works with data type: DATETIME or TIMESTAMP
Tested on: MySQL 5.6.27-2 and MariaDB 10.1.10
Stores the current date and time on INSERT
CREATE TABLE table_demo (
...
`CreatedAt` datetime DEFAULT CURRENT_TIMESTAMP
...
);
Stores the current date and time on INSERT and UPDATE
CREATE TABLE table_demo (
...
`UpdatedAt` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
...
);
Stores the current date and time only on UPDATE
NOTE: when INSERT, the default value is '0000-00-00 00:00:00'
CREATE TABLE table_demo (
...
`UpdatedAt` datetime DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP
...
);
DATETIME
cannot use CURRENT_TIMESTAMP
on update. Instead, change it to a TIMESTAMP
.
Or, consider using a trigger for this situation: http://dev.mysql.com/doc/refman/5.0/en/trigger-syntax.html
EDIT: As in the comments (thanks @АлександрФишер!), this is no longer the case since MySQL 5.6.5, so another solution is to upgrade your server if possible.
The TIMESTAMP and (as of MySQL 5.6.5) DATETIME data types offer automatic initialization and updating to the current date and time. For more information, see Section 11.3.5, “Automatic Initialization and Updating for TIMESTAMP and DATETIME”.
That feature appears to have been introduced in 5.6. Works as expected on my default OS X install.
Reference: Automatic Timestamp Properties Before MySQL 5.6.5