2010-12-02 16 views
11

utilizo ardilla 3.2.0 Cuando intento de sustituir este disparador:Crear/reemplazar el gatillo en Squirrel

CREATE OR REPLACE TRIGGER crw_ins_trig 
    BEFORE INSERT OR UPDATE ON crew 
    FOR EACH ROW 
DECLARE 

BEGIN 
    if (:new.crw_id is null) then 
     select crw_id_seq.nextval 
     into :new.crw_id 
     from dual; 
    end if; 
END; 
/

consigo el mensaje de "los valores de los parámetros Por favor introduzca Relación calidad. ': Nueva'"

Cuando haga clic en Aceptar el mensaje de resultado es:

Warning: Warning: execution completed with warning 
SQLState: null 
ErrorCode: 17110 
Position: 27 

Query 1 of 1, Rows read: 0, Elapsed time (seconds) - Total: 0.023, SQL query: 0.023, Building output: 0 

En mi solicitud me sale un error "ORA-04098: trigger 'CRW_INS_TRIG' is invalid and failed re-validation"

¿Tiene esto que ver con Squirrel? Si es así, ¿cómo puedo resolver esto?

+0

El problema podría ser la línea en blanco entre el DECLARE y comenzar "paramName". Quizás Squirrel está interpretando las primeras cuatro líneas como el comando CREATE TRIGGER (lo que da como resultado un desencadenante no válido), y luego intenta ejecutar el bloque BEGIN-END como un bloque anónimo. –

Respuesta

15

Debe descargar plug-in "sqlparam" ardilla, después de que no le pedirá que llene los valores para: las variables

+0

¡Sí! ¡Funciona y el activador se crea y es válido en Oracle! – Guus

0

Es posible que desee agregar una línea que hace referencia a su disparador para que se vería como

CREATE OR REPLACE TRIGGER crw_ins_trig 
    BEFORE INSERT OR UPDATE ON crew 
    REFERENCING NEW AS NEW 
       OLD AS OLD 
    FOR EACH ROW 
BEGIN 
    if (:new.crw_id is null) then 
     select crw_id_seq.nextval 
     into :new.crw_id 
     from dual; 
    end if;  
END crw_ins_trig; 

probar eso. Si no funciona, intente ejecutar la declaración utilizando una herramienta diferente (por ejemplo, SQL * Plus, PL/SQL Developer, Toad, etc.).

Comparte y disfruta.

+0

que no hace nada, si quieres hacer referencia a algo nuevo, es mejor cambiarle el nombre a algo que no sea nuevo, como n – Alex

Cuestiones relacionadas