0

達成したいことに近づくこのトリガーがありますが、試してみてもまだ達成できません。

私がしたこと

CREATE or REPLACE TRIGGER TR_UPD_TEST_TABLE_B
  AFTER INSERT ON TEST_TABLE_A
  FOR EACH ROW
DECLARE

BEGIN

  FOR VAL IN (SELECT * FROM TEST_TABLE_B A WHERE A.ID = :NEW.ID) LOOP
    IF :NEW.QTY_RECEIVED > VAL.QTY_PRE_RECEIVED THEN
      UPDATE TEST_TABLE_B A SET A.QTY_RECEIVED = 888 WHERE A.ID = :NEW.ID;
    ELSE
      UPDATE TEST_TABLE_B A SET A.QTY_RECEIVED = 111 WHERE A.ID = :NEW.ID;
    END IF;

  END LOOP;

END;

問題

を使っIF :NEW.QTY_RECEIVED > VAL.QTY_PRE_RECEIVEDて :NEW.QTY_RECEIVED を各レコードと比較したいのですが、すべてのレコードの数量を合計しているようです。ELSEしたがって、合計数量が よりも大きいため、ステートメントは常に にジャンプし:NEW.QTY_RECEIVEDます。

4

2 に答える 2