0
の複合トリガーに次の簡単なトリガーを設定すると、ORA-04091 table is mutating error
が回避されます。トリガーを複合トリガーにする?
CREATE OR REPLACE TRIGGER grades_before_update
BEFORE UPDATE OF grade_percent
ON grades
FOR EACH ROW
DECLARE
grade_percent_var NUMBER;
BEGIN
SELECT grade_percent
INTO grade_percent_var
FROM grades
WHERE student_id = :new.student_id;
IF (grade_percent_var > 100 OR grade_percent_var < 0) THEN
RAISE_APPLICATION_ERROR(-20001, 'grade percent must be between 0 and 100');
END IF;
END;
/
私のようなUPDATE
クエリ使用してこのトリガーをテストするたびので、私は求めている理由は次のとおりです。
UPDATE grades
SET grade_percent = 90
WHERE student_id = 1;
私はORA-04091 table is mutating error
を取得します。私はそれを検索したと、このサイトは、私はこのエラーを回避する複合トリガーを必要とするだろうと述べている:
しかし、私が開始するのか分かりません。
更新前にフィールド「grade_percent」の値をチェックすることはあなたの目標ですか? –
はい。トリガーを使用する必要があります。それは要件の一部です。 – 5120bee