PDA

Ver la Versión Completa : Actualizacion masiva con trigger


lledesma
20-04-2009, 16:46:46
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:

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

rgstuamigo
22-04-2009, 23:24:09
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 [-] (http://www.clubdelphi.com/foros/#)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.:rolleyes:
Saludos...:)