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

Trigger compila pero no funciona

Estas en el tema de Trigger compila pero no funciona en el foro de Oracle en Foros del Web. Bueno al grano. Lo que deberia hacer mi disparador es no permitir que se ingresen sueldos mayores a 10000 ni tampoco se pueda modificar un ...
  #1 (permalink)  
Antiguo 04/12/2014, 11:03
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 4 meses
Puntos: 0
Trigger compila pero no funciona

Bueno al grano.
Lo que deberia hacer mi disparador es no permitir que se ingresen sueldos mayores a 10000 ni tampoco se pueda modificar un salario y sea mayor a 10000

Código SQL:
Ver original
  1. CREATE OR REPLACE TRIGGER SUELDO_MAXIMO
  2. BEFORE INSERT OR UPDATE
  3. ON EMP
  4. FOR EACH ROW
  5. BEGIN
  6.    IF (INSERTING AND :NEW.SAL > 10000) THEN    
  7.     RAISE_APPLICATION_ERROR(-20140,'EL SALARIO NO DEBE SER MAYOR A 10000');    
  8.   END IF;
  9.   IF (UPDATING AND :OLD.SAL > 10000) THEN    
  10.     RAISE_APPLICATION_ERROR(-20150,'EL SALARIO NO SE PUEDE MODIFICAR POR QUE ES MAYOR A 10000');    
  11.   END IF;
  12. END SUELDO_MAXIMO;

El trigger compila sin problemas pero al insertar los datos para probar se inserta de manera normal.

PDS: Es sobre la BD Scott sobre la tabla EMP donde pongo el disparador ;) ojala me ayuden
  #2 (permalink)  
Antiguo 04/12/2014, 12:52
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Trigger compila pero no funciona

Puedes poner las pruebas que haces?

Creería que tanto en INSERTING como UPDATING el valor debería ser NEW. De esa forma lo he probado y funciona.

En el updating tienes como variable de comparación a old.sal, que lo mas seguro es que sea un valor inferior a 10000.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 04/12/2014, 13:52
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Trigger compila pero no funciona

Cita:
Iniciado por huesos52 Ver Mensaje
Puedes poner las pruebas que haces?

Creería que tanto en INSERTING como UPDATING el valor debería ser NEW. De esa forma lo he probado y funciona.

En el updating tienes como variable de comparación a old.sal, que lo mas seguro es que sea un valor inferior a 10000.
Ya funciono el trigger hace lo que debe, haciendo la variacion que me sujieres pero me sale este error

Código SQL:
Ver original
  1. Error que empieza en la línea: 19 del comando :
  2. INSERT INTO EMP(EMPNO,ENAME,JOB,SAL) VALUES(1000,'LUIS','SALESMAN',11000)
  3. Informe de error -
  4. Error SQL: ORA-20140: EL SALARIO NO DEBE SER MAYOR A 10000
  5. ORA-06512: en "SCOTT.SUELDO_MAXIMO", línea 4
  6. ORA-04088: error durante la ejecución del disparador 'SCOTT.SUELDO_MAXIMO'
  #4 (permalink)  
Antiguo 04/12/2014, 15:53
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Trigger compila pero no funciona

Pero ese es el comportamiento que tu mismo estas generando cuando se cumple la condición.

Si lo que quieres es ignorar el insert, te recomiendo mejor realizar un procedimiento almacenado donde valides el campo y hagas o no el insert.

Si la validación la haces desde el trigger, lo que te genera es un error en la sentencia y no te deja hacer la operación.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 04/12/2014, 21:39
 
Fecha de Ingreso: noviembre-2013
Mensajes: 28
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Trigger compila pero no funciona

Cita:
Iniciado por huesos52 Ver Mensaje
Pero ese es el comportamiento que tu mismo estas generando cuando se cumple la condición.

Si lo que quieres es ignorar el insert, te recomiendo mejor realizar un procedimiento almacenado donde valides el campo y hagas o no el insert.

Si la validación la haces desde el trigger, lo que te genera es un error en la sentencia y no te deja hacer la operación.
Entonces no esta mal lo que hago... Lo que pasa es el profesor lo quiere de esa manera :/ pero no quiere que me salga ese error que te mostre antes
  #6 (permalink)  
Antiguo 05/12/2014, 08:30
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Trigger compila pero no funciona

No está mal. El trigger se encuentra bien programado y estructurado.

Para eliminar los 2 errores, creería que no se puede. Sin embargo, podrías mirar el tema de excepciones personalizadas.
https://docs.oracle.com/cd/B10501_01...24/07_errs.htm

Si lo logras, nos cuentas.

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

Etiquetas: compila, trigger
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 17:24.