0

我的表中有一个date列。当我对行执行update查询时,每次date都会刷新到当前日期。我已将日期的默认值设置为,CURRENT_TIMESTAMP但为什么每次都会发生这种情况?

更新

我的创建查询:

CREATE TABLE  `ACCOUNTS` (
  `id` bigint(7) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(30) DEFAULT NULL,
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `status` varchar(1) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1234567 DEFAULT CHARSET=latin1
4

3 回答 3

0

这可能与date成为关键字有关。尝试将其更改为some_date. 是CURRENT_TIMESTAMP故意的吗?

于 2012-10-03T14:52:22.800 回答
0

当您将默认值设置为 CURRENT_TIMESTAMP 时,sql 将仅在创建新记录时插入当前时间戳,除非您自己更新,否则永远不会更新它。刷新不会更新时间戳

于 2012-10-03T14:52:39.980 回答
0

如果您使用 MariaDB,此文档页面https://mariadb.com/kb/en/library/timestamp/可能会为您提供一些令人惊讶的信息:

“时间戳字段通常用于定义添加或更新行的时间,默认情况下会在插入或更新记录时自动分配当前日期时间。自动属性仅适用于记录中的第一个 TIMESTAMP ; 后续的 TIMESTAMP 列将不会更改。"

希望这一点可以帮助下一个遇到这个奇妙功能的开发人员......

于 2019-11-05T23:45:27.907 回答