实现 MySQL 添加时间自动添加更新时间自动更新的方式有两种:使用 DEFAULT
属性和使用 TRIGGER
触发器。下面将分别介绍这两种方法的具体实现步骤:
使用 DEFAULT 属性
使用 DEFAULT
属性可以在插入新记录时自动添加创建时间,通过修改记录时的 SQL 语句来实现更新时间自动更新。下面是具体步骤:
- 在创建数据表时,在相应字段的定义中使用
DEFAULT CURRENT_TIMESTAMP
属性来指定默认值为当前时间戳,例如:
CREATE TABLE `test` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(100) NOT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
在这个示例中,字段 created_at
中的默认值为当前时间戳,字段 updated_at
通过 ON UPDATE CURRENT_TIMESTAMP
属性指定在修改记录时自动更新为当前时间戳。
- 在插入新记录时,不需要显式地设置
created_at
字段,MySQL 会自动赋值同当前时间戳。例如:
INSERT INTO `test` (`name`) VALUES ('John Doe');
以上语句将会在表 test
中插入一条新记录,自动添加 created_at
字段的值为当前时间戳。
- 在更新记录时,如果需要自动更新记录的修改时间,只需要在 SQL 语句中指定需要修改的字段即可,例如:
UPDATE `test` SET `name` = 'Jane Doe' WHERE `id` = 1;
以上语句将会修改表 test
中 id
值为 1 的记录的 name
字段为 'Jane Doe',同时自动更新 updated_at
字段的值为当前时间戳。
使用 TRIGGER 触发器
使用触发器可以通过程序代码和存储过程实现在插入新记录和更新旧记录时触发自动更新时间的操作。下面是具体步骤:
- 创建数据表时不需要指定相关字段的默认值。例如:
CREATE TABLE `test` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(100) NOT NULL,
`created_at` TIMESTAMP,
`updated_at` TIMESTAMP
);
- 创建触发器,以在插入新记录时自动更新创建时间,以及在更新记录时自动更新修改时间。以下是两条示例触发器:
-- 在插入新记录时自动更新 created_at 字段的值为当前时间戳
CREATE TRIGGER `test_before_insert` BEFORE INSERT ON `test` FOR EACH ROW
BEGIN
SET NEW.created_at = NOW();
END;
-- 在更新记录时自动更新 updated_at 字段的值为当前时间戳
CREATE TRIGGER `test_before_update` BEFORE UPDATE ON `test` FOR EACH ROW
BEGIN
SET NEW.updated_at = NOW();
END;
在这两个触发器中,BEFORE
关键字表示该触发器会在相应的操作之前执行,INSERT
和 UPDATE
指定了触发器会在插入或更新记录时执行,FOR EACH ROW
指定了触发器会在每一行数据被操作时执行。
- 在插入新记录时,插入语句不需要指定
created_at
字段,触发器会自动将其赋值为当前时间戳。例如:
INSERT INTO `test` (`name`) VALUES ('John Doe');
以上语句将会在表 test
中插入一条新记录,自动添加 created_at
字段的值为当前时间戳。
- 在更新记录时,也不需要指定
updated_at
字段,触发器会自动将其更新为当前时间戳。例如:
UPDATE `test` SET `name` = 'Jane Doe' WHERE `id` = 1;
以上语句将会修改表 test
中 id
值为 1 的记录的 name
字段为 'Jane Doe',同时自动更新 updated_at
字段的值为当前时间戳。
综上所述,以上两种方法均可以实现自动添加创建时间和自动更新修改时间的效果,开发者可以选择适合自己的方法进行实现。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql 实现添加时间自动添加更新时间自动更新操作 - Python技术站