MySQL - Problema con los trigger

 
Vista:

Problema con los trigger

Publicado por Antonio (1 intervención) el 15/03/2019 16:44:30
Buenas tengo la la siguiente función en la cual saco un aumento del 1% en el salario para cada empleado según su antigüedad (año completo trabajado):

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
create or replace FUNCTION FUNCTION2
(
  ID_EMPLEADO IN NUMBER
) RETURN NUMBER AS
 
 
 v_salario employees.employee_id%TYPE := 0;
    v_año_inicio number;
    v_año_actual number;
    v_antiguedad number;
    v_aumento number;
    v_total number;
 
 
BEGIN
 
   SELECT salary into v_salario from employees where employee_id = id_empleado;
    SELECT to_char(hire_date,'yyyy') into v_año_inicio from employees where employee_id = id_empleado;
    SELECT to_char(sysdate,'yyyy') into v_año_actual from dual;
    v_antiguedad := v_año_actual - v_año_inicio;
    v_aumento := ((v_salario * 1) /100);
    v_total := v_antiguedad * v_aumento;
 
 
  RETURN v_total;
END FUNCTION2;

Esta función la tengo que invocar en un trigger el cual cuando se haga una modificación en el campo hire_date tiene que modificar el campo salario y insertar el nuevo salario es decir el salario antiguo más el aumento el trigger es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
create or replace TRIGGER PRUEBA
BEFORE UPDATE OF hire_date ON  employees FOR EACH ROW
DECLARE
 
 
v_nuevo number;
 
BEGIN
 
v_nuevo := function2(:OLD.employee_id);
 
:NEW.salary:= :OLD.salary + v_nuevo;
 
 
END PRUEBA;


El trigger me lo compila de forma adecuada pero cuando modifico el campo hire_date de tabla employees me da un error de tabla mutante ¿Esto a que se debe? ¿Que soluciones existen?.

Un saludo y gracias.
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
sin imagen de perfil
Val: 2
Ha aumentado su posición en 13 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Problema con los trigger

Publicado por RaGK (1 intervención) el 25/02/2020 23:53:11
Hola! ¿Encontraste solución para este problema?
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