更新触发器执行后如何获取上一条记录?

时间:2016-04-23 06:34:59

标签: php mysql triggers

我有一些不同的场景可以使用Trigger。

我想在主表上实际更新之前在日志表中插入记录。但我想以不同的方式做到这一点。

就像只在主表中发生真正的更新时才将记录添加到日志表中,我想使用MySQL Trigger来实现。

我在这里附上屏幕截图。

enter image description here

如果我为name = ABCD更新id = 1,那么它首先读取前一行的状态,将其添加到日志表中。

enter image description here

我想要检查的是使用MySQL触发器,它只在main_table发生实际更新时才添加到main_table_log表。如果main_table中没有更新,那么它不应该将记录添加到main_table_log表。

任何人都可以帮助我吗?我认为它可以做到,但没有得到如何做到这一点?

显然我正在使用PHP作为前端。

1 个答案:

答案 0 :(得分:2)

您可以测试触发器中的旧值和新值是否不同。

CREATE TRIGGER log_trigger
AFTER UPDATE ON main_table
FOR EACH ROW
    IF OLD.name != NEW.name OR OLD.num != NEW.num
    THEN 
        INSERT INTO main_table_log (id, name, num) VALUES (OLD.id, OLD.name, OLD.num)
    END IF