在多个表上触发并将其更新为单列

Triggers on multiple tables and update it into single column

我有一个关于更新员工表格的要求。我必须跟踪用户更新了哪些字段。我们正在保存的员工表格共有 6 tables。 当用户更新任何列时,我想跟踪他更改的旧值和新值。

为此,我创建了一个审计日志 table,因为我保留了 id、employee_id、table_name、old_value、[=22 等字段=]

所以假设用户在员工表单中编辑两列,即名字和姓氏。我想将这两条记录分别保存在两个不同行的旧值列中。即在第一个记录中,它应该得到名字,在第二个记录中它应该得到姓氏。 & 我更改的任何列与 6 个 table 中的任何一个相关,然后它应该在我的触发器 table 中更新 请建议我如何获得此查询

下面我写了一个基本的触发器

CREATE TRIGGER advance_audit 
BEFORE UPDATE ON employee 
FOR EACH ROW 
INSERT INTO employees_audit 
    SET action = 'update', old_name= OLD.firstname, old_name = OLD.lastname;
CREATE TRIGGER advance_audit 
AFTER UPDATE ON employee 
FOR EACH ROW 
BEGIN
IF NEW.firstname <> OLD.firstname THEN 
    INSERT INTO employees_audit (action, column_name, old_name, new_name, operator)
    VALUES ('update', 'firstname', OLD.firstname, NEW.firstname, SYSTEM_USER());
END IF;
IF NEW.lastname <> OLD.lastname THEN 
    INSERT INTO employees_audit (action, column_name, old_name, new_name, operator)
    VALUES ('update', 'lastname', OLD.lastname, NEW.lastname, SYSTEM_USER());
END IF;
-- the same blocks for each another column to be audited
END

使用AFTER触发器。查询失败不会存入日志