2 つのフィールドを合計し、合計値で3 番目のフィールドを更新する単純なUPDATE AFTER INSERT
トリガーを作成しました。DECIMAL(10,2)
DECIMAL(10,2)
トリガーコードは次のとおりです。
delimiter |
CREATE TRIGGER calc_ttl_cost AFTER INSERT ON buybox_rec
FOR EACH ROW
BEGIN
UPDATE buybox_rec SET total_cost = (price+shipping_cost);
END;
|
phpMyAdmin を使用して SQL コマンドを実行しているので、トリガーが正常に作成されていることがわかります。さらに、UPDATE buybox_rec SET total_cost = (price+shipping_cost);
SQL ステートメントを単独で実行すると、期待どおりに動作します。(フィールド名の前後にバックティックを使用して同じコードも試しましたが、それが機能する場合、これをすべて書くことはありません)
問題は、新しい行を挿入すると、トリガーが機能せず、次のエラーがスローされることです。
#1442 - Can't update table 'buybox_rec' in stored function/trigger
because it is already used by statement which invoked this stored
unction/trigger.
このエラーは、ある種の再帰参照または循環参照の問題のように見えますが、問題の場所/内容がわかりません。
また、ストアド プロシージャを作成し、トリガー内から呼び出して同じ結果を取得しようとしましたが、同じエラーが発生しました。
MySQL UPDATEトリガーに関連する他のSOの質問をたくさんチェックし、グーグルで調べましたが、ここにあります.
これは MySQL の範囲外ですか? 許可するのは、非常に一般的で簡単なタスクのようです。
このタスクを自律的に達成する方法を知っている人はいますか? (別名、たとえば、PHP を介して事後にフィールドを合計することについて聞きたくありません)
助けてくれてありがとう