如何在 MySQL 表的列中自动插入当前日期?

介绍

MySQL 数据库是一种广泛使用的关系型数据库管理系统。可以在 MySQL 表的列中自动插入当前日期,这对于跟踪各种类型的数据至关重要。在本文中,您将学习如何在 MySQL 表的列中自动插入当前日期。

使用 DEFAULT / CURRENT_TIMESTAMP 功能

MySQL 提供了两个内置功能来自动插入当前的日期和时间戳。

使用 DEFAULT

可以将列的默认值设置为 DEFAULT ,并将其类型设置为 TIMESTAMP 或 DATETIME 。这将为列添加一个名为 CURRENT_TIMESTAMP 的隐式默认值,该值设置为INSERT操作的当前日期和时间戳。

CREATE TABLE my_table (

id INT NOT NULL AUTO_INCREMENT,

name VARCHAR(30) NOT NULL,

created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (id)

);

在执行 INSERT 操作时,可以忽略 created_at 列,因为 MySQL 会将其自动设置为当前日期和时间戳:

INSERT INTO my_table (name) VALUES ("John Doe");

使用 CURRENT_TIMESTAMP

如果需要手动设置列的其他默认值,可以使用 CURRENT_TIMESTAMP 函数。此功能仅适用于 TIMESTAMP 列。

CREATE TABLE my_table (

id INT NOT NULL AUTO_INCREMENT,

name VARCHAR(30) NOT NULL,

created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

PRIMARY KEY (id)

);

这将为 created_at 列添加一个默认值,并设置其为更新操作的当前日期和时间戳:

UPDATE my_table SET name = "Jane" WHERE id = 1;

使用触发器

可能会遇到要自动填充非日期或时间戳字段的情况。 在这种情况下,MySQL 触发器可以派上用场。

触发器是一种存储过程,可以在 INSERT , UPDATE 或 DELETE 操作之前或之后自动执行。 只要指定了触发事件,就可以执行任何 SQL 语句,这对自动填充列特别有用。

以下是一个例子,它演示了如何创建一个触发器来在创建新数据行时将当前日期插入 my_table 表:

CREATE TRIGGER my_trigger BEFORE INSERT ON my_table

FOR EACH ROW SET new.created_at = NOW();

这行 SQL 命令创建了一个名为 my_trigger 的新触发器,该触发器在 INSERT 操作之前自动执行,是新建的每一行都将其创建日期设置为当前日期。

可以按照以下方式测试此触发器:

INSERT INTO my_table (name) VALUES ("John Doe");

现在可在 my_table 表中查看以下内容:

SELECT * FROM my_table;

结果将包含名为 John Doe 的新行,其中的 created_at 列将包含当前日期。

结论

在 MySQL 表的列中自动插入当前日期非常简单。可以使用 DEFAULT 或 CURRENT_TIMESTAMP 功能,也可以使用 MySQL 触发器来自动填充列值。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签