FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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? |
#2
|
||||
|
||||
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#3
|
|||
|
|||
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? |
#4
|
|||
|
|||
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; Última edición por NPIdea fecha: 16-06-2008 a las 13:58:39. |
#5
|
||||
|
||||
Commit Transaction
Saludos NPIdea, ¿estas haciendo commit despues de hacer los cambios?, creo que por ahi debe de estar el problema.
|
#6
|
|||
|
|||
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. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Duda sobre procedimiento almacenado | Nuria | Firebird e Interbase | 33 | 01-10-2004 21:09:11 |
Procedimiento almacenado para obtener Rubros y subrubros | oliverinf | Firebird e Interbase | 7 | 27-08-2004 01:25:42 |
Consejo sobre componente para backup | apicito | Varios | 0 | 10-05-2004 20:10:59 |
Procedimiento Almacenado | Ulises | Providers | 3 | 30-01-2004 18:14:58 |
Ayuda sobre un Procedimiento Almacenado | Nuria | Firebird e Interbase | 6 | 21-01-2004 13:18:15 |
|