You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在触发器关联的advance_audit表单列中存储多条更新记录

实现多字段变更审计的方案

你的需求可以通过将多个旧字段值结构化存储到old_value列实现,且MySQL行级触发器天然支持批量更新多条记录的审计:

  • 触发器默认是行级触发,每更新1条employee记录就会触发1次插入审计表的操作,批量更新多条时会自动生成对应条数的审计记录,无需额外处理。
  • 多字段存储推荐优先用JSON格式,后续查询解析更方便,修改后的触发器插入代码如下:
INSERT INTO advance_audit
SET 
  action = 'update',
  old_value = JSON_OBJECT(
    'firstname', OLD.firstname,
    'lastname', OLD.lastname,
    'age', OLD.age,
    'department', OLD.department,
    'email', OLD.email
    -- 按照上述格式,补充所有你需要审计的employee表字段即可
  );

如果使用的数据库版本不支持JSON格式,可以改用字符串拼接的方式存储:

INSERT INTO advance_audit
SET 
  action = 'update',
  old_value = CONCAT(
    'firstname:', IFNULL(OLD.firstname, ''), '; ',
    'lastname:', IFNULL(OLD.lastname, ''), '; ',
    'age:', IFNULL(OLD.age, ''), '; ',
    'department:', IFNULL(OLD.department, '')
    -- 补充所有需要审计的字段,IFNULL用于避免NULL值导致整个拼接结果为空
  );

内容的提问来源于stack exchange,提问作者Chitrasen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:06:03