mysql - 触发列值更改?

标签 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,该列应该具有该字段更新时的当前时间/日期的值。

问题:是否可以设置一个触发器来跟踪逐列修改?

最佳答案

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;

关于mysql - 触发列值更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35343096/

相关文章:

mysql - 如何在 vb.net 中检索 mysql 数据?

MySQL 复制 Tungsten 与 Galera

mysql - 为什么这个触发器会导致我的一些插件挂起?

google-apps-script - 如何在 onEdit 触发器上执行 copyTo 后附加时间戳?

sql - 反对向其他表插入数据的SQL触发器的原因?

java - Mysql Java 更新查询

php - 生成 Wordpress 页面子级的标题和缩略图列表

mysql - 限制 MySQL 数据库表中插入的行数

mysql - Oracle SQL 触发器更新问题 - 研究/学习

mysql - 左连接但取随机值