2013-08-19 4 views
0

В базе данных оракула: Я пробовал следующий запрос:оракула создать триггер

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

Похоже, она не компилируется должным образом или что отсутствует зависимость. Являются ли таблицы h_product и product в схеме neila или имеет ли схема 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écification de déclencheur erronée – junior

+0

@neila Можете ли вы преобразовать сообщение об ошибке на английский ? – user75ponic

+0

недействительная спецификация триггера – junior