
Actualizar un campo cada vez que se inserte o se borre un dato una tabla en Oracle
Publicado por Daniel (1 intervención) el 18/01/2022 18:22:02
Buenas estoy realizando un trigger en oracle que, cada vez que se inserte o se borre una tupla en la tabla empleado se actualice en la tabla jefe, el campo num_empledos_a_cargo. La tabla empleado contiene los siguientes campos:
DNI_EMPLEADO
DNI_JEFE
La tabla jefe contendrá los siguientes campos:
- DNI_JEFE
- NUM_EMPLEADOS_A_CARGO
Por lo cual me ha quedado el siguiente código:
El disparador se crea sin ningún tipo de problema pero a la hora de insertar o borrar una tupla salta el error de que estoy mutando la tabla, es probable que sea porque estoy sacando algún dato de la manera equivocada, pero me estoy volviendo loco.
Cualquier ayuda se agradece. Gracias.
DNI_EMPLEADO
DNI_JEFE
La tabla jefe contendrá los siguientes campos:
- DNI_JEFE
- NUM_EMPLEADOS_A_CARGO
Por lo cual me ha quedado el siguiente código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
CREATE OR REPLACE TRIGGER ACTUALIZAR_NUM_EMPLEADOS AFTER INSERT OR DELETE ON EMPLEADO FOR EACH ROW
DECLARE
CONT JEFE.NUM_EMPLEADOS_A_CARGO%TYPE;
BEGIN
IF INSERTING THEN
SELECT COUNT(*) INTO CONT
FROM EMPLEADO
WHERE DNI_JEFE=:NEW.DNI_JEFE
GROUP BY DNI_JEFE;
UPDATE JEFE
SET NUM_EMPLEADOS_A_CARGO=CONT
WHERE DNI_JEFE=:NEW.DNI_JEFE;
END IF;
IF DELETING THEN
SELECT COUNT(*) INTO CONT
FROM EMPLEADO
WHERE DNI_JEFE=:OLD.DNI_JEFE
GROUP BY DNI_JEFE;
UPDATE JEFE
SET NUM_EMPLEADOS_A_CARGO=CONT
WHERE DNI_JEFE=:OLD.DNI_JEFE;
END IF;
END;
/
El disparador se crea sin ningún tipo de problema pero a la hora de insertar o borrar una tupla salta el error de que estoy mutando la tabla, es probable que sea porque estoy sacando algún dato de la manera equivocada, pero me estoy volviendo loco.
Cualquier ayuda se agradece. Gracias.
Valora esta pregunta


0