sql >> データベース >  >> RDS >> Oracle

ORA-04084:このトリガー・タイプの新しい値は変更できません

    コメントで要求されたように、私は答えとしてコメントをしています。

    問題は、値が永続化された後に値を変更しようとしているためです。トリガーをBEFOREに変更してみてください。 として:

    CREATE OR REPLACE TRIGGER TOTAL
      BEFORE UPDATE OR INSERT ON ORDER_ITEMS
      FOR EACH ROW
    DECLARE
      temp  NUMBER;
      today DATE;
    BEGIN
        temp:=(:NEW.item_price-:NEW.discount_amount)*:NEW.quantity;
        today := CURRENT_DATE;
        :NEW.TOTAL := temp;
        dbms_output.put_line('Updated on:' || today || ' item number: '
                               || :NEW.item_id || 'order number:' || :NEW.order_id 
                               || 'total: ' ||:NEW.total);
    END;
    /
    



    1. 2つの値のみを受け入れるように列を制限する

    2. テーブル式の基礎、パート6 –再帰的CTE

    3. 空白のフィールドがある可能性のあるDjangoOneToOneField

    4. Oracleディクショナリ・ビューを使用してPL/SQLパッケージレベルのタイプを検出