【发布时间】:2018-02-03 05:02:55
【问题描述】:
编辑:这篇文章已解决。我犯了一个愚蠢的错误。我的更新查询没有更改更改字段的值,触发器仅捕获第一个值更改。对不起!
我有一个触发器,它没有考虑更新查询中的所有更新字段。
这是我的触发器history_transaction,我只审核status 和price_asked 表transac_transaction 的字段的更改
CREATE TRIGGER history_transaction
AFTER UPDATE ON transac_transaction
FOR EACH ROW
BEGIN
IF(OLD.status <> NEW.status) THEN
INSERT INTO transac_transaction_history(transac_id, author, old_data, new_data, date_upd)
VALUES (OLD.id, OLD.last_author_id_update, OLD.status, NEW.status, NOW());
END IF;
IF(OLD.price_asked <> NEW.price_asked) THEN
INSERT INTO transac_transaction_history(transac_id, author, old_data, new_data, date_upd)
VALUES (OLD.id, OLD.last_author_id_update, OLD.price_asked, NEW.price_asked, NOW());
END IF;
END;
$$
如果我执行更新,例如:
update transac_transaction set price_asked=12.00, status=1 where id=2;
我只会在审计表中插入 price_asked 更改,而不是状态。
我的触发器中缺少某些可能会在字段上循环的内容? 我认为每一行都没有考虑到所有更新的字段。
非常感谢。
【问题讨论】: