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 选项或者触发器。在进行数据录入和更新时,我们可以轻松地自动记录创建时间和更新时间。