1

Oracle データベースの場合: 次のクエリを試しました。

    CREATE or REPLACE TRIGGER  myTrigger
AFTER UPDATE OR INSERT ON product
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN

    INSERT INTO h_product
    (
        H_PRODUCT_ID,
        PRODUCT_ID     
    )
    VALUES
    (
      seq_h_product.nextval,
       :new.product_id
    );

END

実行すると、次のエラーが発生します。

3:56:45  [UPDATE - 0 row(s), 0.000 secs]  [Error Code: 4098, SQL State: 42000]  ORA-04098: Déclencheur  'NEILA.myTrigger' non valide. Echec de la revalidation

私は実行します:

select object_name
from dba_objects
where object_type = 'TRIGGER'
and status = 'INVALID';

=> リストに myTrigger が表示されます! なぜ無効なのですか?

4

1 に答える 1

1

あなたが逃したので、次のようにしてください:new.product_id

CREATE or REPLACE TRIGGER  myTrigger
AFTER UPDATE OR INSERT ON product
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN

    INSERT INTO h_product
    (
        H_PRODUCT_ID,
        PRODUCT_ID     
    )
    VALUES
    (
      seq_h_product.nextval,
       :new.product_id
    );

END;
/
于 2013-08-19T13:08:09.957 に答える