Oracle - Ayuda con trigger

   
Vista:

Ayuda con trigger

Publicado por sami vibela0001@gmail.com (3 intervenciones) el 25/06/2014 00:32:00
tengo este trigger y me sale un error pero no se a que se deba ya busque en manuales de oracle pero aun asi sigue fallando:


create or replace
trigger TRIGGER_SYSCONTEXT_I AFTER
INSERT OF EMP_KEYEMP
ON NMCOEMPL_MON
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW

DECLARE
w_num_error NUMBER(6);
w_mensaje VARCHAR2(100);

VEMP_KEYEMP NUMBER(38);
SYS_CONTEXTSC VARCHAR2(100);

BEGIN
IF INSERTING THEN
VEMP_KEYEMP:=:NEW.EMP_KEYEMP;

select user|| sysdate||sys_context ('userenv', 'host')
from dual
INTO SYS_CONTEXTSC
END IF;

---- actualiza EN LA TABLA DE MONITOREO

UPDATE NMCOEMPL_MON
SET SYSCONTEXT = SYS_CONTEXTSC
COMMIT;

EXCEPTION
WHEN OTHERS THEN
w_num_error := SQLCODE;
w_mensaje := SUBSTR(SQLERRM,1,100);
END;

el error:
Informe de error:
ORA-04073: lista de columnas no válida para este tipo de disparador
04073. 00000 - "column list not valid for this trigger type"
*Cause: A column list was specified for a non-update trigger type.
*Action: Remove the column list.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con trigger

Publicado por Rafael rafael@reef-life.com.mx (177 intervenciones) el 25/06/2014 20:05:32
El error es conceptual... estas declarando el cursor de este modo ...
1
2
3
create or replace
trigger TRIGGER_SYSCONTEXT_I AFTER
INSERT OF EMP_KEYEMP

Y el mensaje es claro usas una lista de campos en un TRIGGER que no es del tipo UPDATE... es del tipo INSERT por lo tanto debes omitir el listado de campos y solo declarar

1
2
3
create or replace
trigger TRIGGER_SYSCONTEXT_I AFTER
INSERT

Ahora bien por que digo conceptual, cuando ejecutas un INSERT es todo el registro el que se agrega en blanco... luego se actualiza.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con trigger

Publicado por sami (3 intervenciones) el 26/06/2014 19:37:40
ya lo compile pero me arroja estos errores:
Error(12,1): PL/SQL: SQL Statement ignored
Error(13,11): PL/SQL: ORA-00933: comando SQL no terminado correctamente
Error(23,3): PLS-00103: Encountered the symbol "EXCEPTION" when expecting one of the following: ( begin case declare else elsif end exit for goto if loop mod null pragma raise return select update while with <an identifier> <a double-quoted delimited-identifier> <a bind variable> << continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge
Error(27,4): PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: end not pragma final instantiable order overriding static member constructor map
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con trigger

Publicado por sami (3 intervenciones) el 25/06/2014 20:11:38
ah gracias

entonces deberia omitir el campo y dejarlo asi:

create or replace
trigger TRIGGER_SYSCONTEXT_I AFTER
INSERT
ON NMCOEMPL_MON
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar