在 MySQL 中,我厌倦了将列dt_created
和dt_modified
(分别是创建和最后修改的日期时间戳)添加到我数据库中的所有表中。
每次我INSERT
或UPDATE
数据库时,我都将不得不使用NOW()
关键字。这就是我的坚持。
是否有任何有效的替代方法可以让 MySQL 至少自动存储插入行的数据时间并让我检索它?
您可以使用 DEFAULT 约束来设置时间戳:
ALTER TABLE
MODIFY dt_created datetime DEFAULT CURRENT_TIMESTAMP
ALTER TABLE
MODIFY dt_modified datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
然后你就不必NOW()
在你的 INSERT/UPDATE 语句中指定了。
参考:TIMESTAMP 属性
如果您使用的是phpmyadmin,您可以通过以下方式执行此操作:
ALTER TABLE `tablename` CHANGE `dt` `dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
应该是正确的代码。
此处提出了类似的问题“ MySQL的时间戳”,时间戳字段将在每次访问时更新。您还可以考虑在相关表上放置一个触发器来自动为您填充这些字段。根据环境,一些商店/企业不喜欢使用触发器,因此您可能需要寻找替代解决方法。
在 phpmyadmin 你可以设置
或使用此查询
ALTER TABLE `tablename`
CHANGE `dt_created` `dt_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
可以在更新行时设置为默认值
ALTER TABLE `tablename` CHANGE `dt` `dt` TIMESTAMP on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;