我正在尝试为 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
实际进入记录的数据。