我有一些不同的场景可以使用Trigger。
我想在主表上实际更新之前在日志表中插入记录。但我想以不同的方式做到这一点。
就像只在主表中发生真正的更新时才将记录添加到日志表中,我想使用MySQL Trigger来实现。
我在这里附上屏幕截图。
如果我为name = ABCD更新id = 1,那么它首先读取前一行的状态,将其添加到日志表中。
我想要检查的是使用MySQL触发器,它只在main_table发生实际更新时才添加到main_table_log表。如果main_table中没有更新,那么它不应该将记录添加到main_table_log表。
任何人都可以帮助我吗?我认为它可以做到,但没有得到如何做到这一点?
显然我正在使用PHP作为前端。
答案 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