編輯:這篇文章已解決。我有一個愚蠢的錯誤。我的更新查詢沒有改變更改字段的值,觸發器只捕獲第一個值更改。對不起!更新後觸發器確實考慮到所有更新值
我有一個觸發器不考慮更新查詢中的所有更新字段。
這裏是我的觸發history_transaction
,爲status
我只審計變化表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;
$$
的price_asked
領域如果我執行更新,如:
update transac_transaction set price_asked=12.00, status=1 where id=2;
我只會有一個插入在price_asked更改的審計表中,而不是狀態。
東西在我的觸發器中可能會循環丟失字段? 我覺得每一行都沒有考慮到更新的所有字段。
非常感謝。
我只是意識到,觸發器在另一個mariaDB實例和Mysql上運行良好。也許版本問題...我調查...謝謝你的解決方案 – iKonenn
我有mariadb 10.2.3。在preprod服務器上,我們有10.0.29 – iKonenn