mysql:当字段更新时如何自动更新时间戳

标签 mysql timestamp sql-update

我有一个简单的数据库表,其中有几个用于文章数据库的字段,其中一个时间戳包含文章上次更新的时间。

我使用“ON UPDATE CURRENT_TIMESTAMP”

问题是我只想在该记录的某些字段发生更改(而不是全部字段发生更改)时进行更新。

即对于每篇文章,我都有一个字段给出访问者阅读该文章的次数。每次网络访问后不得更新...仅当我更改标题、作者等时...

理想情况下有一个很好的 mysql 命令...


我编写了以下代码:

CREATE TRIGGER `actu_lastupdate_date` BEFORE UPDATE ON `actuality`
 FOR EACH ROW BEGIN
    if NEW.title <> OLD.title OR NEW.chapeau = OLD.chapeau OR NEW.content = OLD.content
    then
        SET NEW.LastUpdate_date = current_timestamp;
    end if;
END

看来即使另一个记录字段发生变化,时间戳也会更新。应该是有什么不好的地方。 我会调查一下

最佳答案

您可以编写一个触发器来添加更新时间戳

delimiter |
CREATE TRIGGER actu_lastupdate_date AFTER UPDATE on actuality
FOR EACH ROW
BEGIN
    if (NEW.title <> OLD.title 
         OR NEW.chapeau <> OLD.chapeau 
         OR NEW.content <> OLD.content)
        AND (NEW.other_column = OLD.other_column 
         OR NEW.other_column2 = OLD.other_column2)
    then
        SET NEW.LastUpdate_date = current_timestamp;
    end if;
END
|
delimiter ;

关于mysql:当字段更新时如何自动更新时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13566115/

相关文章:

php - 无法使用 INNER JOIN 使用 PDO 连接另一个表

java - 以毫秒为单位的日期与其日历表示形式之间的差异

mysql - 更新条件来自另一个表的表字段

sql - 使用序列更新现有记录的最快方法是什么?

mysql - 在主键和自动递增 int 的上下文中实现 INDEX 字段

php - 无法使用 Slim Framework 从 PUT 请求获得响应

mysql - 在 MySQL V8.0 上我应该在哪个文件中添加 `innodb_` 相关条目

time - 将当前时间部署到 LoRaWAN 节点?

sql - 如何从 SQL 表中选择其中 TIMESTAMP 是特定日期

PHPMyAdmin 更新后触发器不起作用