Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/12/2010, 17:55
edilopez
 
Fecha de Ingreso: diciembre-2010
Mensajes: 2
Antigüedad: 13 años, 4 meses
Puntos: 0
Sonrisa Respuesta: Necesito saber como hacer un trigger que saque promedio

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Hay varios considerandos a tener en cuenta:

- Un trigger es una rutina que se ejecuta cada vez que se cumple el evento para el que fue definida (INSERT, UPDATE o DELETE), lo que quiere decir que en tu caso, si hicieses veinticinco inserciones (si ese fuese el evento), el promedio en cuestión se calcularía veinticinco veces y se almacenaría veinticinco veces. Eso no tiene sentido, al menos práctico.

- Un TRIGGER es una rutina que se define si la tarea a cumplir se debe hacer si o sí cada vez que esa sentencia se ejecuta, si la rutina contiene tareas que se ejecuten siempre de la misma forma y normalmente si esas tareas se deben hacer con uno o más de los valores que pertenecen al registro que se inserta/actualiza/borra. Si no es así, si el proceso abarca conjuntos que no necesariamente incluyen a ese registro, es probable que la rutina a crear no sea un TRIGGER sino un STORED PROCEDURE, como te están indicando.

- Hacer un TRIGGER para crear un dato calculable en sí no tiene tampoco mucho sentido práctico, porque el promedio que buscas, por ejemplo, es mucho más simple de calcular directamente cuando haces las consultas, con todos los datos ya ingresados/actualizados.

- Almacenar un dato calculable tampoco es una buena práctica, porque los datos calculables, precisamente se pueden calcular al mismo tiempo que se recuperan los datos vinculados. Para eso es que existen las funciones agrupadas, el GROUP BY, y todos los tipos de consulta que los aprovechan.

- Los datos calculables le agregan problemas de consistencia a las bases de datos (razón por la cual en las cursadas de la asignatura en la facultad, los profesores dicen "¡están prohibidos!"). Tienen el problema de ser datos que requieren mantenimiento a través del tiempo, porque cada vez que se realice un a inserción/actualización/borrado de los datos que los afectan, hay que recorrer todos los datos claculables almacenados para actualizarlos, con el consiguiente aumento de procesos, validaciones y tiempo de programación, todo lo cual se podría evitar simplemente... haciendo que el calculo se haga cuando se hace la consulta, la que en esas condiciones siempre está actualizada.

Bien, respecto a los TRIGGER en sí, tienen variaciones de codificación y capacidades según el DBMS que uses, por lo que empecemos con lo que ya te pidieron: ¿Qué estás usando?
En si me parece que la idea de un procedimiento es algo mas viable, de hecho ya lo habia pensado que un trigger no es pertinente pero pues era una condicion del planteamiento de mi trabajo en fin creo q sera un procedimiento, por tanto me gustaria conocer como promediar con el procedimiento me parece el procedimiento lo tendremos q mandar llamar desde asp para que lo haga en ese momento y arroje el dato.

ok estoy utilizando sql server 2000, la idea es que la base de promediar se haga con respecto a una condicion es decir de todos los 25 registros(por ejemplo) que se hallan insertado, verificar en el campo de codigo que coincidan y todos los registros que coincidan promediarlos eso es lo que necesito nd mas :D