2013-08-19 172 views
0

在Oracle数据库:我尝试以下查询: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! 为什么它无效?

+0

听起来就像是没有正确编译或它缺少一个依赖以下。 Neila模式中的h_product和产品表都有,还是neila模式有权从产品和h_product表中插入/更新/选择? – xQbert

+0

什么'显示错误'给你? –

+0

使用dbvisualizer如何执行显示错误? – junior

回答

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; 
/
+0

我试过这个,但我得到另一个错误: [错误代码:4079,SQL状态:42000] ORA-04079:spécificationdedéclencheurerronée – junior

+0

@neila您能否将错误信息转换为英文? – user75ponic

+0

无效触发器规范 – junior