【问题标题】:CURRENT_TIMESTAMP on update of one column onlyCURRENT_TIMESTAMP 仅更新一列
【发布时间】:2015-08-02 12:14:44
【问题描述】:

我希望仅在更新一个特定的其他列而不是整行时才能够更新设置为 CURRENT_TIMESTAMP 的列。例如,在具有 status,some_other_col,updated_on 之类的列的表中,我需要 updated_on 列中的 CURRENT_TIMESTAMP 仅在 status 中的值更改时更改,并且在 some_other_col 上进行更改时保持不变。这可能吗?如果是,查询的正确语法是什么?

【问题讨论】:

  • 您可以为此使用触发器。

标签: mysql


【解决方案1】:

试试这个

DELIMITER //
 CREATE TRIGGER updtrigger BEFORE UPDATE ON mytable
     FOR EACH ROW
     BEGIN
     IF NEW.status <> OLD.status THEN
     SET NEW.updated_on = NOW();     
     END IF;
     END
     //

【讨论】:

  • 工作(几乎)就像一个魅力。因为我是触发器的新手(而且 SQL 比 SELECT 和 UPDATE 更先进),所以我不得不通过1235 This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' 来挣扎一下。但最后,在 UPDATE 之后将触发器插入查询本身就可以了。谢谢!
  • 嗨,Inverbis,我也想实现同样的目标。您能告诉我您用来实现此目标的实际代码吗?
【解决方案2】:

您可以在更新状态列后更新 updated_on 列。易于管理。如果您更改数据源,则可以重写触发器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-17
    • 2011-07-31
    • 2013-02-12
    • 2019-06-03
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    相关资源
    最近更新 更多