回答:
変換テーブルエラーの最も可能性の高い原因は、トリガーの誤用です。典型的な例を次に示します。
これは予想される正常な動作です。Oracleは次のことを保証するため、ユーザーを保護します。
ほとんどの場合、この種のトリガーを作成すると、クエリ(2)で(1)に挿入された行が表示されることが予想されます。更新はまだ終了していないため、上記の両方の点と矛盾します(挿入する行がさらにある可能性があります)。
Oracle は、ステートメントの開始直前の時点と一致する結果を返すことができますが、このロジックを実装しようとするほとんどの例から、人々は複数行のステートメントを一連の連続したステップと見なし、ステートメント[2]で、前のステップで行われた変更を確認します。Oracleは期待される結果を返すことができないため、エラーをスローします。
詳細については、Ask Tomの「mutating table」を参照してください。
私が疑うように、変化するテーブルエラーの原因がトリガーである場合、エラーを回避する1つの方法は、トリガーからプロシージャにロジックを移動することです。
変異の表では、文が火災とそのトリガー参照トリガーを発生させたテーブルにトリガが発生したときに発生します。このような問題を回避する最善の方法は、トリガーを使用しないことですが、DBAはそのために時間をかけなかったと思われます。彼は次のいずれかを行うことができました。