Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-04-2009
lledesma lledesma is offline
Miembro
 
Registrado: abr 2004
Posts: 43
Poder: 0
lledesma Va por buen camino
Actualizacion masiva con trigger

Hola comunidad:
Tengo una tabla llamada PRESUPUESTO que tiene tres campos: IDPRESUPUESTO, IDMATERIAL y PRECIO. cualquier material puede estan N veces en la tabla y en un presupuesto pero con el mismo precio siempre que se trate del mismo presupuesto. El operador al modificar el precio de un material en un presupuesto, el nuevo valor se debe actualizar en todos las apariciones de ese material en ese presupuesto. El trigger que hice es el siguiente:

Código SQL [-]
CREATE TRIGGER actualiza AFTER UPDATE ON presupuesto
BEGIN
   if new.precio<>old.precio then
      update presupuesto set precio=new.precio 
      where idmaterial=new.idmaterial and idpresupuesto=new.idpresupuesto
END;

Cada vez que el operador modifica un precio, el nuevo valor se copia en todos los registros en donde aparece el material pero sola para ese presupuesto. Mi pregunta es:

Cada vez que se modifica un valor con la sentencia UPDATE del trigger, y se modifica el precio del material se dispara de nuevo el triggers para esa nueva modificicacion, generandose cierta recursividad?. EL proceso demora muchisimo, hay algun modo de realizar lo mismo pero mas optimizado?, que no demore tanto. Utilizo Firebird 2.0

Desde ya muchas gracias
__________________
Atentamente
Luis
Responder Con Cita
  #2  
Antiguo 22-04-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Wink

Cita:
Empezado por lledesma Ver Mensaje
Hola comunidad:
Tengo una tabla llamada PRESUPUESTO que tiene tres campos: IDPRESUPUESTO, IDMATERIAL y PRECIO. cualquier material puede estan N veces en la tabla y en un presupuesto pero con el mismo precio siempre que se trate del mismo presupuesto. El operador al modificar el precio de un material en un presupuesto, el nuevo valor se debe actualizar en todos las apariciones de ese material en ese presupuesto. El trigger que hice es el siguiente:

Código SQL [-]CREATE TRIGGER actualiza AFTER UPDATE ON presupuesto BEGIN if new.precio<>old.precio then update presupuesto set precio=new.precio where idmaterial=new.idmaterial and idpresupuesto=new.idpresupuesto END;


Cada vez que el operador modifica un precio, el nuevo valor se copia en todos los registros en donde aparece el material pero sola para ese presupuesto. Mi pregunta es:

Cada vez que se modifica un valor con la sentencia UPDATE del trigger, y se modifica el precio del material se dispara de nuevo el triggers para esa nueva modificicacion, generandose cierta recursividad?. EL proceso demora muchisimo, hay algun modo de realizar lo mismo pero mas optimizado?, que no demore tanto. Utilizo Firebird 2.0

Desde ya muchas gracias
Creo que si se genera una recursividad y por eso es la tardanza de la que hablas.Quisas podrias actualizar la tabla no utilizando el Trigger sino utilizando una sentencia desde tu cliente despues de que el operador hizo la modifcacion.
Ten en cuenta que los trigger generalmente se usan para actualizar,insertar,eliminar,etc. registros de otras tablas y no de la cual es parte o pertenece el trigger.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 22-04-2009 a las 23:30:13.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Modificacion masiva Spynosa Firebird e Interbase 7 07-10-2010 06:06:05
insercion masiva Alfredo Firebird e Interbase 3 12-11-2008 20:34:46
Actualizacion de un campo desde un trigger fedat Firebird e Interbase 2 14-11-2007 01:13:00
un trigger de actualizacion santiago14 Firebird e Interbase 2 30-11-2004 03:57:19
Trigger de Actualización subzero Firebird e Interbase 8 12-02-2004 21:22:28


La franja horaria es GMT +2. Ahora son las 18:35:23.


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
Copyright 1996-2007 Club Delphi