我需要为删除操作创建触发器,该操作备份审计表中的所有字段旧值。
我有一个审计表的表结构为
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)
等等..
答案 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 ;