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