以下实例,这个能够产生单个字段的变更日志,
drop trigger if exists trigger_goods_update;
DELIMITER $$CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
TRIGGER `ec_server`.`trigger_goods_update` AFTER UPDATE
ON `ec_server`.`ecs_goods`
FOR EACH ROW BEGIN
SET @update_fields ='' ;
IF new.goods_name!=old.goods_name THEN
SET @update_fields = CONCAT(@update_fields,'goods_name,');
END IF;
INSERT INTO `ecs_goods_update_log` (log_key_id,log_type,log_fields) VALUES(new.goods_id, 'update',@update_fields);
END$$DELIMITER ;但是我不想一个字段一个字段的写,有什么办法可以几行代码找出所有变动的字段,并添加到日志当中,核心问题就是怎么提取一个表的所有字段,并且循环比较new.字段==old.字段。。
drop trigger if exists trigger_goods_update;
DELIMITER $$CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
TRIGGER `ec_server`.`trigger_goods_update` AFTER UPDATE
ON `ec_server`.`ecs_goods`
FOR EACH ROW BEGIN
SET @update_fields ='' ;
IF new.goods_name!=old.goods_name THEN
SET @update_fields = CONCAT(@update_fields,'goods_name,');
END IF;
INSERT INTO `ecs_goods_update_log` (log_key_id,log_type,log_fields) VALUES(new.goods_id, 'update',@update_fields);
END$$DELIMITER ;但是我不想一个字段一个字段的写,有什么办法可以几行代码找出所有变动的字段,并添加到日志当中,核心问题就是怎么提取一个表的所有字段,并且循环比较new.字段==old.字段。。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货