TRIGGER:在“ON DUPLICATE KEY UPDATE”期间读取NEW.values和OLD.values

时间:2013-02-28 20:08:05

标签: mysql triggers insert on-duplicate-key

我正在尝试为MySQL中的各个表编写一个小型审计系统。

我很幸运使用基本的INSERT / UPDATE / DELETE命令,但现在我对审核感兴趣的表使用了INSERT ... ON DUPLICATE KEY UPDATE

通过使用触发器ON BEFORE INSERT我可以告诉这个事件正在发生,但是我只能获得我感兴趣的一半数据。NEW.values随时可用,但我不知道如何得到之前的OLD.values。我想我可以使用现有表中的NEW.ID进行查询,但我不确定性能和可靠性。

我需要OLD.values,因为我正在为每个更改事件存储旧值和新值,因为我在某处读取了折叠数据等的好主意...

在MySQL 5.0(或更新的GA版本)中是否有办法可靠地检索这些值,就像我在UPDATE触发器中一样?

编辑:另一个皱纹:

NEW.values看起来与更新后的数据不匹配。它们匹配INSERT语句而不是实际进入记录的ON DUPLICATE KEY UPDATE数据。

1 个答案:

答案 0 :(得分:0)

看起来触发事件ON AFTER UPDATE 捕获ON DUPLICATE KEY UPDATE更改。从这里,我能够获得OLD / NEW值并执行我需要执行的日志记录。