0

ミューテーションの問題を回避するために、複合トリガーを作成しようとしています。テーブルと、トランザクション挿入を実行する python のプロシージャがあります。テーブルには n フィールドがあります。私がやろうとしているのは、これらのフィールドのいずれかの値が負の場合、操作を実行せず、テーブルのフィールドの前のレコード (挿入前) から値を挿入することです。もう 1 つの懸念事項は、サイトを区別するために、フィールドの 1 つが id であるということです。

いいえ、これは私が持っているコードです。1つのフィールド(KWHGEN)のみを考慮しています:

CREATE OR REPLACE TRIGGER "CIRCU3".D_measures_TP_test
--FOR INSERT OR UPDATE ON T_MEASURES_TP_NEW
FOR INSERT ON T_MEASURES_TP_NEW
COMPOUND TRIGGER

VAL_KWHGEN NUMBER(21,2);
VAL_autoin NUMBER (19,0);

AFTER EACH ROW IS
BEGIN
SELECT autoin, KWHGEN INTO VAL_ID_MED, VAL_KWHGEN FROM
    (SELECT * 
        FROM T_measures_TP_NEW WHERE ID_site = :NEW.ID_site
       ORDER BY TIMESTAMP DESC)
    WHERE ROWNUM = 1;

IF :NEW.KWHGEN <0
  THEN UPDATE T_MEASURES_TP_NEW SET KWHGEN = VAL_KWHGEN WHERE autoin = VAL_autoin;

END IF;
END AFTER EACH ROW;

END D_MEASURES_TP_test;

しかし、突然変異エラーが私に続いています;-)

4

3 に答える 3

0

T_MEASURES_TP_NEW でトリガーを作成し、トリガー内で同じテーブル T_MEASURES_TP_NEW を更新しました。これにより、トリガーが再度呼び出されます。トリガーの最初の選択が再び VAL_KWHGEN に負の値を返すと、変更エラーが発生します。

于 2015-07-01T11:37:26.577 に答える