Oracle - Necesito ayuda para crear dos Triggers (1 before, 2 After)

   
Vista:

Necesito ayuda para crear dos Triggers (1 before, 2 After)

Publicado por Alberto (2 intervenciones) el 14/05/2015 09:37:23
Muy buenas a todos, soy nuevo en este foro y expongo en este "post" mis dudas sobre este tema.

Pues como digo en el titulo necesito ayuda para crear los dos "triggers" que son 1 como "before" y el otro como "after":
1- El primero tendría que hacer esto:
-Crear un "trigger" que no permita modificar el "manager_id" de la tabla "departments" si el nuevo valor a introducir es el de un empleado del departamento 80("before")

2- El segundo tendría que hacer esto:
Crear un "trigger" que al insertar un nuevo "job_id" le asigne como "min_salary" el menor de los salarios de los empleados("After")

Muchas gracias de antemano y un Saludo.
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

Necesito ayuda para crear dos Triggers (1 before, 2 After)

Publicado por Alberto (2 intervenciones) el 18/05/2015 10:30:01
(adjunto el esquema de las tablas)
tabla-ejemplo-sql
Buenas a todos,
he creado el trigger nº1 pero me da un error, me podéis ayudar a solucionar el problema?
Codigo Trigger
1
2
3
4
5
6
7
8
9
10
11
12
create or replace trigger modificador
   before update of manager_id on departments
      DECLARE
      v_emp employees.employee_id%TYPE;
   begin
      if(
        select count(employee_id) INTO v_emp from employees where employee_id=80);
      end if;
      if :new.department_id=80 then
        RAISE_APPLICATION_ERROR(-23344,'No puede modificar el manager id al agregar un empleado del departamento 80');
      end if;
end;

codigo error:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Error que empieza en la línea: 2 del comando :
create or replace trigger modificador
   before update of manager_id on departments
   begin
      if :new.department_id=80 then
        RAISE_APPLICATION_ERROR(-23344,'No puede modificar el manager id al agregar un empleado del departamento 80');
      end if;
end;
Informe de error -
ORA-04082: referencias NEW u OLD no permitidas en disparadores a nivel de tabla
04082. 00000 -  "NEW or OLD references not allowed in table level triggers"
*Cause:    The trigger is accessing "new" or "old" values in a table trigger.
*Action:   Remove any new or old references.
TRIGGER MODIFICADOR compilado
Errors: check compiler log
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

Necesito ayuda para crear dos Triggers (1 before, 2 After)

Publicado por Richie richievalbuena@gmail.com (16 intervenciones) el 22/05/2015 16:29:47
Buen día amigo,

Te falta la siguiente linea que esta dentro de /*xxxxxx*/:

1
2
3
4
5
6
7
8
CREATE OR REPLACE TRIGGER acsel.cheque_01
 AFTER
  UPDATE
 ON acsel.cheque_emp
/*REFERENCING NEW AS NEW OLD AS OLD
 FOR EACH ROW*/
DECLARE
BEGIN

Avisame si te sirve...
Un consejo:
Datos existente Manejas :OLD.Valor
Datos nuevos Manejas: :NEW.valor
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