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
MySQL does not allow functions to be used for default DateTime
values. (See MySQL Data Type Defaults.)
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.
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.
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
...
);
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
Yeah, and if you change it to timestamp , with neither DEFAULT CURRENT_TIMESTAMP
nor ON UPDATE CURRENT_TIMESTAMP
, it is the same as specifying both DEFAULT CURRENT_TIMESTAMP
and ON UPDATE CURRENT_TIMESTAMP
.