![]() |
No me funciona el when sqlcode ...
Hola estoy trabajando en Interbase 6.5 y he creado este trigger:
para una tabla con este formato: TABLA "DETALLE_FACTURA_A" "FACTURA_A" INTEGER NOT NULL, "ARTICULO" INTEGER NOT NULL, "CANTIDAD" INTEGER, "DESCUENTO_1" DOUBLE PRECISION, "DESCUENTO_2" DOUBLE PRECISION, "SUBTOTAL" DOUBLE PRECISION CONSTRAINT "PK_DETALLE_FACTURA_A" PRIMARY KEY ("FACTURA_A", "ARTICULO") donde la clave primaria esta conformada por el campo FACTURA_A Y ARTICULO ambos son atributos de otras tablas (claves foraneas) El problema es que funciona todo, menos la ultima linea que en teoria tiene que elevar una excepcion cuando repite un articulo en la tabla, no se si es por el momento en que ejecuta el trigger (BEFORE INSERT). Si alguien tiene idea, gracias. |
Código:
if (NEW.CANTIDADthen Por otro lado no es necesario que metas dentro del "if" erroneo la sentencia "update", pues ya tienes controlada la posible excepción de ruptura de stock. un saludo. |
Je corregi el error, pero no consigo que me muestre el mensaje que quiero (EXCEPCION REPITE_ART: 'Se ha repetido un item'), por lo que pude leer en otro thread el problema es el siguiente:
"El trigger before insert no puede "cachar" un error que no se ha producido cuando se invoca (el SQL code ocurrirá un instante después, cuando se intente aplicar el registro a la bd). El trigger after tampoco servirá, pues dado que el error ya ocurrió, nunca llega a dispararse. En general, no podes capturar en el trigger un error que se generará por la inserción del registro en la bd. ¿Por que no capturas el error desde donde está intentando insertarse el registro?". Lo que no se es como hacer esto, que recomienda el amigo. Saludos. |
Tienes dos opciones:
a) En el trigger realizas una búsqueda para comprobar si existe ese item y llamas a la excepción b) Controlas el error en la aplicación cuando la base de datos te devuelva por si sola la excepción. Ya que la excepción la tienes definida en la BD, yo haría el punto a). Saludos ;) |
La franja horaria es GMT +2. Ahora son las 02:12:13. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi