MySQL TIMESTAMP(3)的默认值

MySQL TIMESTAMP(3)的默认值

MySQL中的TIMESTAMP数据类型是一个常用的日期和时间类型,它可以精确到秒级或毫秒级,具体取决于使用的子秒数。当声明TIMESTAMP字段时,可以使用括号来指定子秒精度。例如,TIMESTAMP(3)表示精确到毫秒级的时间戳。

在使用TIMESTAMP字段时,有时候我们可能不会为其值指定一个具体的日期或时间,而希望在插入一条新记录时,该字段的值能自动使用MySQL的默认值。那么,如何为TIMESTAMP字段设置默认值呢?

阅读更多:MySQL 教程

默认值

在MySQL中,可以使用DEFAULT关键字为TIMESTAMP字段设置默认值。该关键字允许我们为字段指定固定的默认值,以确保一个合适的值在我们没有在INSERT语句中明确指定时被插入。

例如,我们可以创建一个名为orders的表,其中包含created_at和updated_at字段,这两个字段的数据类型均为TIMESTAMP(3):

CREATE TABLE orders (
  id INT(11) NOT NULL AUTO_INCREMENT,
  total DECIMAL(10, 2) NOT NULL,
  created_at TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
  updated_at TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

在上面的CREATE TABLE语句中,我们为创建时间和更新时间字段分别指定了一个默认值。对于created_at字段,我们使用了CURRENT_TIMESTAMP(3)作为其默认值。这意味着如果我们没有为该字段指定一个具体的值,MySQL会自动在插入记录时使用当前的日期和时间作为其值。

同样地,对于updated_at字段,我们使用了ON UPDATE CURRENT_TIMESTAMP(3)子句,这表示当记录被更新时,MySQL会自动将该字段的值更新为当前的日期和时间。

让我们向orders表中插入一条新记录,查看默认值是否生效:

INSERT INTO orders (total) VALUES (100.00);

这会将total字段设置为100.00,而created_at和updated_at字段将默认使用当前的日期和时间。我们可以查询新记录的created_at和updated_at字段,以确认它们是否按预期工作:

SELECT created_at, updated_at FROM orders WHERE id = 1;

结果应该类似于:

+-------------------------+-------------------------+
| created_at              | updated_at              |
+-------------------------+-------------------------+
| 2021-07-25 13:23:08.425 | 2021-07-25 13:23:08.425 |
+-------------------------+-------------------------+

可以看到,MySQL成功为这两个TIMESTAMP字段自动生成了一个默认值。

自定义默认值

除了使用MySQL内置的默认值函数之外,我们还可以使用具体的日期时间作为TIMESTAMP字段的默认值。

例如,我们可以为orders表中的updated_at字段设置一个将来的时间,以便在更新记录时使用该时间:

ALTER TABLE orders MODIFY updated_at TIMESTAMP(3) NOT NULL DEFAULT '2030-01-01 00:00:00.000';

这将updated_at字段的默认值设置为2030年1月1日00:00:00.000,这意味着如果我们更新orders表中的记录,其值将自动设置为2030年1月1日。

清除默认值

如果我们想删除TIMESTAMP字段的默认值,可以使用ALTER TABLE语句:

ALTER TABLE orders ALTER COLUMN created_at DROP DEFAULT;

这将删除created_at字段的默认值,当我们插入一条新记录时,created_at字段将不再自动填充。

总结

在MySQL中,使用DEFAULT关键字可以为TIMESTAMP字段设置默认值,可以使用内置的日期时间函数、具体的日期时间或NULL作为默认值。我们还可以随时通过ALTER TABLE语句更改TIMESTAMP字段的默认值,或使用DROP DEFAULT选项来清除默认值。设置TIMESTAMP字段的默认值有助于确保所插入的记录始终包含正确的日期和时间,并简化INSERT语句的编写。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程