15/05/2012, 18:31
|
| | Fecha de Ingreso: mayo-2012 Ubicación: cali
Mensajes: 2
Antigüedad: 12 años, 6 meses Puntos: 0 | |
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?? |