BEFORE INSERT TRIGGERで不思議なエラーが発生しましたが、理解できません。同様の問題でここに投稿された複数の質問を読んだ後でも。
「メソッド」の処理に失敗しました:category_id='foo'およびrequest_id='99'エラー:java.sql.BatchUpdateException:ORA-04091:テーブルSCHEMA.ANIMAL_TABLEが変化しています、トリガー/関数はそれを認識しない可能性がありますORA-06512:at " SCHEMA.TRIGGER_NAME "、7行目ORA-04088:トリガー'SCHEMA.TRIGGER_NAME'の実行中にエラーが発生しました
トリガーは次のとおりです。
CREATE OR REPLACE TRIGGER TRIGGER_NAME
BEFORE INSERT ON animal_table FOR EACH ROW WHEN (NEW.animal_type = 'cats')
DECLARE base_animal_id NUMBER(19,0); base_amount NUMBER(19,0);
BEGIN
SELECT animal_nbr INTO base_animal_id
FROM animal_table
WHERE category_id = :NEW.category_id AND summary_id = :NEW.summary_id
AND animal_type = 'special';
SELECT animal_amount INTO base_amount
FROM animal_table
WHERE category_id = :NEW.category_id AND summary_id = :NEW.summary_id
AND animal_type = 'special';
IF :NEW.category_id = 'foo' THEN
:NEW.animal_info1 := base_animal_id;
:NEW.animal_info2 := base_amount;
:NEW.animal_info3 := '00';
END IF;
END;
トリガーが保持されているのと同じテーブルでの変更に関するルールを知っていますが、新しい列を変更するときに、:NEWフィールドに対してのみ機能する必要があるものも赤くしています。また、トリガーイベントとしてUPDATEが欠落している可能性があると思いましたが、そうではありませんでした。誰か助けてくれませんか?トリガーとPL/SQLは初めてです。