MySQL 如何添加 ‘created_at’ 和 ‘updated_at’ 字段?

MySQL 如何添加 ‘created_at’ 和 ‘updated_at’ 字段?

在很多应用程序中,需要添加记录的创建时间和更新时间,这是很常见的需求。在 MySQL 中,我们可以使用以下两种方法来添加 ‘created_at’ 和 ‘updated_at’ 字段。

阅读更多:MySQL 教程

方法一:使用 DEFAULT 和 ON UPDATE

在创建表时,可以使用 DEFAULT 和 ON UPDATE 选项来添加 ‘created_at’ 和 ‘updated_at’ 字段:

CREATE TABLE `table_name` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `name` VARCHAR(255),
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
  • ‘created_at’ 字段使用 DEFAULT CURRENT_TIMESTAMP,表示默认值为当前时间戳。
  • ‘updated_at’ 字段使用 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,表示默认值为当前时间戳,且每次更新记录时自动更新为当前时间戳。

方法二:使用触发器

另一种方法是使用触发器来添加 ‘created_at’ 和 ‘updated_at’ 字段。以下是一种示例:

CREATE TRIGGER `table_name_before_insert` BEFORE INSERT ON `table_name`
FOR EACH ROW SET NEW.created_at = NOW(), NEW.updated_at = NOW();

CREATE TRIGGER `table_name_before_update` BEFORE UPDATE ON `table_name`
FOR EACH ROW SET NEW.updated_at = NOW();
  • 在 INSERT 操作时,执行 ‘table_name_before_insert’ 触发器,设置 ‘created_at’ 和 ‘updated_at’ 字段为当前时间戳。
  • 在 UPDATE 操作时,执行 ‘table_name_before_update’ 触发器,设置 ‘updated_at’ 字段为当前时间戳。

示例

-- 创建 users 表并添加 'created_at' 和 'updated_at' 字段
CREATE TABLE `users` (
  `id` INT AUTO_INCREMENT PRIMARY KEY,
  `name` VARCHAR(255),
  `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 插入一条记录
INSERT INTO `users` (`name`) VALUES ('Tom');

-- 查询记录
SELECT * FROM `users`;

-- 更新记录
UPDATE `users` SET `name` = 'Jerry' WHERE `id` = 1;

-- 再次查询记录
SELECT * FROM `users`;

总结

添加 ‘created_at’ 和 ‘updated_at’ 字段,可以使用 DEFAULT 和 ON UPDATE 选项或者触发器。在进行数据录入和更新时,我们可以轻松地自动记录创建时间和更新时间。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程