MySQL触发器是一种很强大的机制,它能够帮助我们在特定条件下自动地执行SQL语句。其中一个比较常见的应用就是在更新某个字段的时候自动更新另一个字段。下面我们来看一个简单的例子。
CREATE TRIGGER `t_after_goods_update` AFTER UPDATE ON `goods` FOR EACH ROW BEGIN IF NEW.price <> OLD.price THEN UPDATE `goods` SET `last_update` = NOW() WHERE `id` = NEW.id; END IF; END;
以上的触发器定义了当商品表中的价格字段发生变化时,自动将该商品的最后更新时间字段(last_update)更新为当前时间。其中,关键字NEW表示新的值,OLD表示旧的值。
需要注意的是,为了避免死循环,触发器不应当直接修改自己所从属的表。通常情况下,我们会选择修改另一个表或者调用存储过程来完成操作。
除了在更新字段时自动执行SQL语句,触发器还可以在其他情况下自动执行,比如在插入、删除、替换等操作时。这让我们能够更方便地控制数据的变化,提高数据的完整性和安全性。