【发布时间】:2010-10-18 22:02:16
【问题描述】:
我正在使用触发器将更改存储在审计表中,我只想存储已更改列中的值。
BEGIN
IF NEW.history_of_repair_trigger_fired = 1 THEN
INSERT INTO history_of_repair SET
edit_date_time=NEW.last_edited_date_time,
edited_by=NEW.edited_by,
repair_id=NEW.repair_id,
tenant_name=NEW.tenant_name,
property_id=NEW.property_id,
priority=NEW.priority,
comments=NEW.comments,
signed_off=NEW.signed_off;
END IF;
END
目前这也在审计表中存储未更改的值,这是不可取的。
在我的审计表中只存储更改的列的最佳方式是什么?
【问题讨论】:
-
您能解释一下为什么不希望存储所有值吗?通常,我将审计表视为表中值的历史记录,并希望将当时的所有值连同修改时间和执行者一起保存。
-
确实有两个原因 - 1) 我不确定始终存储所有内容是否有效?并且 2) 我只打算使用审计来显示更改的值,即当前记录下方的“名字从“bill”更改为“William”11/04/09 15:47 by user: Chris Watts。
标签: mysql triggers audit-tables