2013-08-19 174 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