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 回答