Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Necesito saber como hacer un trigger que saque promedio

Estas en el tema de Necesito saber como hacer un trigger que saque promedio en el foro de Bases de Datos General en Foros del Web. Hola bueno ando un poco atorado, varios dias con esto y por mas que me roto la cabeza no logro dar con ninguna salida, en ...
  #1 (permalink)  
Antiguo 18/12/2010, 22:00
 
Fecha de Ingreso: diciembre-2010
Mensajes: 2
Antigüedad: 14 años
Puntos: 0
Pregunta Necesito saber como hacer un trigger que saque promedio

Hola bueno ando un poco atorado, varios dias con esto y por mas que me roto la cabeza no logro dar con ninguna salida, en fin necesito saber como puedo hacer un trigger que al momento de insertar desde mi paguna asp(que ya funciona perfectamente) a la tabla destino saque el promedio de las calificaciones de los alumnos segun guardo su informacion en esa tabla y que a la vez de hace el promedio los inserte en otra tabla que se llama promedio.

Se escucha logiko y comprensible pero soy un pobre amateur y no conozco extensamente por eso pido su ayuda si pudiesen ayudarme muchas gracias. :D
  #2 (permalink)  
Antiguo 19/12/2010, 00:29
 
Fecha de Ingreso: diciembre-2010
Mensajes: 16
Antigüedad: 14 años
Puntos: 1
Respuesta: Necesito saber como hacer un trigger que saque promedio

Cita:
Iniciado por edilopez Ver Mensaje
Hola bueno ando un poco atorado, varios dias con esto y por mas que me roto la cabeza no logro dar con ninguna salida, en fin necesito saber como puedo hacer un trigger que al momento de insertar desde mi paguna asp(que ya funciona perfectamente) a la tabla destino saque el promedio de las calificaciones de los alumnos segun guardo su informacion en esa tabla y que a la vez de hace el promedio los inserte en otra tabla que se llama promedio.

Se escucha logiko y comprensible pero soy un pobre amateur y no conozco extensamente por eso pido su ayuda si pudiesen ayudarme muchas gracias. :D
Suena logico, pero mas que un trigger debes programar un procedimiento almacenado(Store Procedure / SP) y llamarlo desde el asp luego de terminar los insters de las notas, luego ese SP insertara en la tabla promedio.

El como, dependera del gestor de base de datos que estes usando, ya ahi te toca leer un poco ;)

Saludos cordiales.
  #3 (permalink)  
Antiguo 19/12/2010, 06:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Necesito saber como hacer un trigger que saque promedio

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?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 19/12/2010, 17:55
 
Fecha de Ingreso: diciembre-2010
Mensajes: 2
Antigüedad: 14 años
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

Etiquetas: intro, promedio, trigger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:41.