編集:この投稿は解決されました。私は愚かな誤りを抱えていた。私の更新クエリは、変化しているフィールドの値を変更していない、トリガーは最初の値の変更をキャッチしていた。ごめんなさい !更新後のトリガーはすべての更新された値を考慮に入れます
更新クエリの更新されたすべてのフィールドを考慮しないトリガーがあります。ここ
は私のトリガー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