Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-10-2005
micayael micayael is offline
Miembro
 
Registrado: sep 2005
Posts: 68
Poder: 19
micayael Va por buen camino
Post Recursividad en trigger

Hola.

Tengo un trigger que calcula para un presupuesto (AFTER UPDATE) que llama a un SP que recalcula el total del presupuesto sumando todos los totales de los detalles y me devuelve el total para actualizar el total de mi presupuesto pero cuando se ejecuta me dice

Too many concurrent executions of the same request

Segun entiendo es porque en el trigger de actualizacion vuelve a actualizar lo que hace que sea realice un bucle. Como puedo hacer para poder actualizar este dato?

Última edición por micayael fecha: 31-10-2005 a las 16:00:59.
Responder Con Cita
  #2  
Antiguo 31-10-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Creo que aquí hay un problema de diseño, puesto que aparentemente hay una recursividad infinita. Desconozco el método que sigue firebird para lanzar el error, pero estoy convencido que el límite será suficientemente alto como para ocurrir solo en casos donde efectivamente se da este caso.

Por otro lado, de la explicación que das, no entiendo por que el sp manda actualizar nuevamente el registro que lanzó el trigger...

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 31-10-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Prueba a desactivar el trigger para evitar recursividad.

Código SQL [-]

ALTER TRIGGER nombre_trigger INACTIVE; /*desactiva el trigger en cuestión */

/* Coloca  tu código de actualización con SP aquí*/

ALTER TRIGGER nombre_trigger ACTIVE; /*activa el trigger nuevamente */

Un Saludo

Última edición por Héctor Randolph fecha: 31-10-2005 a las 22:36:18.
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


La franja horaria es GMT +2. Ahora son las 17:45: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
Copyright 1996-2007 Club Delphi