MySQL is not allowing ON UPDATE CURRENT_TIMESTAMP for a DATETIME field

后端 未结 7 1617
不知归路
不知归路 2021-02-12 23:18

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

相关标签:
7条回答
  • 2021-02-12 23:54

    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.

    0 讨论(0)
  • 2021-02-13 00:04

    MySQL does not allow functions to be used for default DateTime values. (See MySQL Data Type Defaults.)

    0 讨论(0)
  • 2021-02-13 00:07

    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
        ...
    );
    
    0 讨论(0)
  • 2021-02-13 00:10

    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.

    0 讨论(0)
  • 2021-02-13 00:13

    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”.

    0 讨论(0)
  • 2021-02-13 00:15

    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

    0 讨论(0)
提交回复
热议问题