MySQL TIMESTAMP字段设置默认值NULL而不是CURRENT_TIMESTAMP

MySQL TIMESTAMP字段设置默认值NULL而不是CURRENT_TIMESTAMP

MySQL是广泛用于开发应用程序和管理数据的关系型数据库管理系统。在MySQL中,TIMESTAMP字段通常用于处理日期和时间数据。默认情况下,TIMESTAMP字段设置为CURRENT_TIMESTAMP,这意味着它将自动设置为当前日期和时间。但在某些情况下,我们可能想要将TIMESTAMP字段设置为NULL而不是CURRENT_TIMESTAMP。在本文中,我们将探讨如何将TIMESTAMP字段设置为默认值NULL而不是CURRENT_TIMESTAMP。

阅读更多:MySQL 教程

问题

在MySQL中,创建一个TIMESTAMP字段,默认情况下它的默认值被设置为CURRENT_TIMESTAMP,如下所示:

CREATE TABLE `mytable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
SQL

这将导致在插入新行时,created_at字段将被自动设置为当前时间。这是非常有用的,但如果你想将created_at字段的默认值设置为NULL而不是CURRENT_TIMESTAMP,该怎么做呢?继续阅读本文,了解解决方案。

解决方案

解决方案非常简单 – 只需为TIMESTAMP字段指定一个NULL默认值即可。以下示例显示如何更改上面的示例表,使其默认值为NULL,而不是CURRENT_TIMESTAMP。

CREATE TABLE `mytable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `created_at` TIMESTAMP DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
SQL

这样做后,在插入每个新行时,created_at字段将被设置为NULL,而不是自动生成一个时间戳值。

注意事项

在将TIMESTAMP字段的默认值更改为NULL之后,如果您想在插入新行时设置一个特定的时间戳值,您仍然可以使用INSERT INTO语句手动设置它的值,如下所示:

INSERT INTO `mytable`(`id`, `created_at`) 
VALUES (1, '2022-01-01 00:00:00');
SQL

总结

在MySQL中,TIMESTAMP字段的默认值默认为CURRENT_TIMESTAMP。如果您希望将其更改为NULL,可以向创建表的语句中添加DEFAULT NULL选项。这将导致在插入新行时,该字段的值将为NULL,但您仍然可以手动指定一个值。希望这篇文章对您有所帮助,如果您对MySQL和其他数据库问题有任何疑问,请随时前来咨询。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册