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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-06-2023
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
Lanzar un Store Procedure cuando se detecta inactividad

Saludos a todos. (En el título: Stock -> Store) Cuando se inserta o modifica datos en una tabla de movimientos de artículos (ventas, compras, traspasos...) lanzo en un trigger una Procedure que se encarga de mantener el stock y datos estadísticos.
En una instalación, a primera hora, se procesan todos los pedidos recibidos el día anterior (desde tres puestos diferentes) y se crean las líneas de ventas correspondientes. Unas 6000 líneas de ventas diarias... lo cual hace que se lance el Store Procedure 6.000 veces. Realmente se han movido 200 artículos, sólo habría que lanzarlo 200 veces cuando se termine la generación masiva en todos los puestos. Durante el resto del día, se hace sólo 20 o 30 documentos por hora, desde más de 10 puestos. Se me ha ocurrido crear una tabla donde el trigger, en vez de lanzar el procedure, meta el código del artículo y el almacén, siempre que no exista ya, y cuando se detecte inactividad lanzar el store procedure para la lista de artículos incluidos y vaciar la tabla...

El tema es... ¿Cómo detecto inactividad en Firebird? o por lo menos... ¿Cómo detecto que en un determinado tiempo no se han añadido artículos a esta tabla? Estoy hablando de ejecución en el propio firebird... sería muy fácil tener un programa con un Timer comprobando la tabla y las última inserciones en la misma, y lanzar el store procedure cuando detecte que se han pasado más de 20 o 30 segundos sin incluir artículos...eso indicaría que han terminado de generar documentación... y seguiría funcionando para el resto de creación de documentos durante el día de la misma manera, evitando que se ralentice la grabación del documento haciendo cálculos de stocks y estadísticas.

Pero por experiencia, tener una aplicación desatendida en el servidor suele dar problemas... un error, un deadlock, una desconexión de red o un reinicio del servidor.... y todos los stocks estarían mal hasta que alguien se de cuenta de que el programa se ha parado. Pero no encuentro cómo crear un timer en Firebird o, lo que sería la caña, detectar que el servidor está inactivo, y ponerme a procesar la tabla en tiempos de inactividad, y parar de procesarla cuando entre en actividad... eso sería ideal.
__________________
Amar al mundo apasionadamente.

Última edición por Casimiro Notevi fecha: 03-06-2023 a las 11:55:02. Razón: palabra incorrecta en el título
Responder Con Cita
 



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
Store Procedure shoulder SQL 5 06-06-2019 17:18:51
Store procedure sancarlos MySQL 3 30-01-2008 19:51:49
Store Procedure sépoco MS SQL Server 5 10-01-2008 16:11:54
Store procedure php jorgito MySQL 1 06-06-2006 08:55:12
store procedure ronimaxh Firebird e Interbase 2 24-06-2003 20:20:22


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


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