我需要为删除操作创建Trigger,它会备份审计表中的所有旧字段值

时间:2010-03-31 12:58:37

标签: mysql sql triggers

我需要为删除操作创建触发器,该操作备份审计表中的所有字段旧值。

我有一个审计表的表结构为

  

id,menuid,field,oldvalue,   changedone

现在每当从其母表(菜单)中删除任何有21个字段的行时,每个字段的旧值都应该在审计表中插入新的审计ID ..

喜欢如果我删除一个字段为:

的行
  

menuid,姓名,年龄,地址,性别,城镇

现在在审计表中,对于上面给出的每个字段,应单独插入6行:

AUdit表:

id=2(audittable id) 
             menuid = menuid
             field = name
             oldvalue = joy
             changedone = (whatever the deleted time was)

             id=3(audittable id) 
             menuid = menuid
             field = age
             oldvalue = 23
             changedone = (whatever the deleted time was)

等等..

1 个答案:

答案 0 :(得分:4)

这样的事情应该是你正在寻找的东西。

delimiter //
CREATE TRIGGER audit_menu BEFORE DELETE ON menu
FOR EACH ROW
BEGIN
    INSERT INTO audit (menuid, field, oldvalue, changedone) VALUES
        (OLD.menuid, 'name', OLD.name, UNIX_TIMESTAMP() ),
        (OLD.menuid, 'age', OLD.age, UNIX_TIMESTAMP() ),
        (OLD.menuid, 'address', OLD.address, UNIX_TIMESTAMP() ),
        (OLD.menuid, 'sex', OLD.sex, UNIX_TIMESTAMP() ),
        (OLD.menuid, 'town', OLD.town, UNIX_TIMESTAMP() )
END;//
delimiter ;