Consejo para principiante sobre Disparador y Procedimiento almacenado
Hola a todos.
Mi consulta es de diseño. Tengo dos tablas Facturas y Conceptos. Lo que quiero es que cada vez que tenga un insert, update o delete en conceptos me recalcule el total de la factura. Escojo After en vez de Before 1-Crear un trigger para los tres supuestos ¿Como llamo al procedimiento almacenado? ¿execute procedure mirartotal? 2-Crear el prodecimiento almacenado mirartotal UPDATE Facturas SET TOTAL=(Select sum(total) from Conceptos where Facturas.factura=Conceptos.factura) LQue me aconsejais? |
En principio, puedes ahorrarte el SP ¿no?. colocas directamente en el disparador la instrucción SQL.
Si te decides por tener un SP, pues elije el nombre más descriptivo posible: "ActualizaTotalFactua" Es muy fácil complicar las cosas, intenta seguir el método KISS (Keep It Simple Stupid ;)). Saludos |
Problema en el disparador.
Bueno, lo primero gracias por contestar y darme ese consejo. Ya os he comentado que soy muy novato.
Tengo funcionando el disparador con el siguiente código: Código:
UPDATE FACTURAS SET TOTAL=(Select SUM(Total) from conceptos where conceptos.FACTURA=new.Factura) where factura=new.Factura; Trabajo con los IBX, las IBTransaction están en Read commited y despues de un post en el evento afterpost le hago el Commit y abro el IBDataset. ¿Algo hago mal? |
Pues debe ser que no devuelve nada la instrucción Select(SUM
Bueno pues sigo intentando hacer funcionar esto.
Le he colocado detras del UPDATE otro, simplemente para ver si cambia y efectivamente si lo hace Código:
UPDATE FACTURAS SET PAGADA=5 where Factura=new.Factura; Código:
UPDATE FACTURAS SET TOTAL=(Select SUM(Total) from conceptos where conceptos.FACTURA=new.Factura) where factura=new.Factura; |
Commit Transaction
Saludos NPIdea, ¿estas haciendo commit despues de hacer los cambios?, creo que por ahi debe de estar el problema.
|
Gracias por vuestro interés
Bueno, pues ayer lo solucioné y lno pudé acceder al foro por la mañana.
Pues sí, era problema de los commit. Hacía commit de una tabla y abría la tabla y luego hacía el commit de la otra y no me guardaba los cambios. Ahora hago commit en el mismo evento y los actualiza perfectamente. Repito, muchas gracias. |
La franja horaria es GMT +2. Ahora son las 00:22:06. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi