Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Error ejecutando trigger

Estas en el tema de Error ejecutando trigger en el foro de Oracle en Foros del Web. Buenas mi problema es el siguiente quiero insertar dos tablas al mismo tiempo tengo una tabla llamada empleado con los campos ( cedula_empleado, nombre, apellido, ...
  #1 (permalink)  
Antiguo 15/05/2012, 18:31
 
Fecha de Ingreso: mayo-2012
Ubicación: cali
Mensajes: 2
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta Error ejecutando trigger

Buenas
mi problema es el siguiente
quiero insertar dos tablas al mismo tiempo
tengo una tabla llamada empleado con los campos ( cedula_empleado, nombre, apellido, direccion, telefono, salario, fecha_ingreso y funcion ) y la PK es cedula_empleado
y otra tabla estado donde tengo los campos (cedula_empleado y estado) donde cedula_empleado es llave foranea de empleado
lo que quiero hacer es que cuando registre un empleado nuevo automaticamente se llene la tabla estado colocando la cedula del empleado que se ha registrado y colocando su estado activo

haciendo esto en us select no hay problema porq busco la cedula del ultimo registro de empleado con rowid y lo inserto en la tabla estado
INSERT ALL
INTO estado
VALUES (cedula_empleado, 'activo')
SELECT cedula_empleado
FROM empleado
WHERE empleado.cedula_empleado = (SELECT cedula_empleado FROM empleado
WHERE rowid IN (SELECT max(rowid) FROM empleado));

con esa consulta hace lo que yo quiero, pero tendria que ejecutar cada vez que registre un empleado por eso quiero usar un trigger ,, pero el problema es q cuando coloco esa consulta en un trigger no me funciona y me sale Error ORA-04091
el trigger que pongo es:
create or replace trigger "EMPLEADO_REGISTRAR_ESTADO"
AFTER
insert or update on "EMPLEADO"
for each row
begin
INSERT ALL
INTO estado
VALUES (cedula_empleado, 'Activo')
SELECT cedula_empleado
FROM empleado
WHERE empleado.cedula_empleado = (SELECT cedula_empleado FROM empleado
WHERE rowid IN (SELECT max(rowid) FROM empleado));
end;​
hay alguna forma de solucionarlo??
  #2 (permalink)  
Antiguo 15/05/2012, 19:43
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 1 mes
Puntos: 360
Respuesta: Error ejecutando trigger

Prueba este codigo.

Código SQL:
Ver original
  1. CREATE OR REPLACE TRIGGER "EMPLEADO_REGISTRAR_ESTADO"
  2. AFTER
  3. INSERT OR UPDATE ON "EMPLEADO"
  4. FOR each ROW
  5. BEGIN
  6. INSERT ALL
  7. INTO estado
  8. VALUES (NEW.cedula_empleado, 'Activo');
  9. END; ​

No tengo como probarlo.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: funcion, select, tabla, trigger, formulario, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:53.