MySQL自动存储每行的日期时间

mau*_*ris 44 mysql sql audit datetime

在MySQL中,我厌倦了添加列dt_createddt_modified(分别是创建和最后修改的日期时间戳)到我的数据库中的所有表.

每次我INSERTUPDATE数据库,我都必须使用NOW()关键字.这完全是我的坚持.

是否有任何有效的替代方案,MySQL可以自动存储至少插入的行的数据时间,让我检索它?

OMG*_*ies 80

您可以使用DEFAULT约束来设置时间戳:

ALTER TABLE
 MODIFY dt_created datetime DEFAULT CURRENT_TIMESTAMP

ALTER TABLE
 MODIFY dt_modified datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)

然后,您不必NOW()在INSERT/UPDATE语句中指定.

参考:TIMESTAMP属性

  • `DEFAULT ON UPDATE CURRENT_TIMESTAMP`是无效的SQL.它必须是`dt_modified datetime ON UPDATE CURRENT_TIMESTAMP`或`dt_modified datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP`如果你仍然声称它是有效的,那么MySQL Workbench可能有一个应该提到的问题. (6认同)
  • **条件信息:**表中的一个TIMESTAMP列可以将当前时间戳作为初始化列的默认值,作为自动更新值,或两者.当前时间戳不可能是一列的默认值和另一列的自动更新值.http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html (3认同)

Oua*_*die 12

如果您使用的是phpmyadmin,可以通过以下方式执行此操作:

在此输入图像描述


Kim*_*cks 10

ALTER TABLE  `tablename` CHANGE  `dt`  `dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)

应该是正确的代码.