介绍
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 触发器来自动填充列值。