触发列值更改?

时间:2016-02-11 15:16:19

标签: mysql triggers

我正在使用一些SQL触发器来在修改或创建表行时启动操作。这就像魅力一样,在我的示例中将列gen_date设置为当前日期/时间:

CREATE TRIGGER insert_template BEFORE INSERT ON template
FOR EACH ROW BEGIN
  SET new.gen_date := now();
END;

我有另一列image,我想添加一列image_date,该列应该具有该字段更新时的当前时间/日期的值。

问题:是否可以设置跟踪列式修改的触发器?

1 个答案:

答案 0 :(得分:1)

NEW.可以访问新值,OLD.可以访问旧值。您可以比较它们以定义值是否已更改。

CREATE TRIGGER insert_template BEFORE INSERT ON template
FOR EACH ROW BEGIN
  SET NEW.gen_date := now();
  IF NEW.image <> '' THEN
    SET NEW.image_date := now();
  END IF;
END;

CREATE TRIGGER update_template BEFORE UPDATE ON template
FOR EACH ROW BEGIN
  IF NEW.image <> OLD.image THEN
    SET NEW.image_date := now();
  END IF;
END;