gpt4 book ai didi

mysql - 避免 "on update current_timestamp"

转载 作者:行者123 更新时间:2023-11-29 22:56:55 24 4
gpt4 key购买 nike

在 MySQL 中,我想要一个 TIMESTAMP 类型的表列,但它在行更新时更新为当前时间戳。

我的表格如下简单:

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

最佳答案

正如 Marc B 在评论中已经提到的那样,TIMESTAMP 的默认行为应该就是这样做的。

我发现,当您在表创建中设置默认值(或ALTER)时,默认值不再是CURRENT_TIMESTAMP(显然),而且“更新 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 但省略了该属性,则不会设置该属性。仅当根本不提供默认值时,才会静默设置它。

关于mysql - 避免 "on update current_timestamp",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28679543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com