在MySQL中,我希望有一个类型为TIMESTAMP
的表列,但 NOT 会更新到行更新的当前时间戳。
我的表格简单如下:
CREATE TABLE `test` (
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`lastAccess` TIMESTAMP NOT NULL,
PRIMARY KEY (`id`)
);
然后由MySQL创建,如下所示:
DESCRIBE TABLE `test`;
+------------+---------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------------+------+-----+-------------------+-----------------------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| lastAccess | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+------------+---------------------+------+-----+-------------------+-----------------------------+
如何避免默认值以及更新"更新"行为吗
我使用InnoDB引擎,如果重要的话。
MySQL版本:5.5.41-0ubuntu0.14.04.1
答案 0 :(得分:0)
正如Marc B在评论中已经提到的那样,TIMESTAMP
的默认行为应该就是这样。
我发现当您在表格创建中设置默认值(或ALTER
时),默认值不再是CURRENT_TIMESTAMP
(显然),,但删除属性“on update CURRENT_TIMESTAMP”(有趣的是)。
CREATE TABLE `test` (
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`lastAccess` TIMESTAMP NOT NULL DEFAULT 0,
-- ^^^^^^^^^
PRIMARY KEY (`id`)
);
另外有趣的是,如果您设置DEFAULT CURRENT_TIMESTAMP
但省略了该属性,则不会设置该属性。只有在提供完全没有默认值时才会静默设置。