Foros del Web » Programación para mayores de 30 ;) » Java »

Aconsejable utilizar un trigger

Estas en el tema de Aconsejable utilizar un trigger en el foro de Java en Foros del Web. Hola estoy haciendo una aplicación y me han dicho que es aconsejable que utilize algun trigger y/o procedimineto almacenado. A groso modo, la aplicación gestiona ...
  #1 (permalink)  
Antiguo 05/01/2008, 06:34
 
Fecha de Ingreso: mayo-2005
Mensajes: 294
Antigüedad: 18 años, 11 meses
Puntos: 0
Aconsejable utilizar un trigger

Hola estoy haciendo una aplicación y me han dicho que es aconsejable que utilize algun trigger y/o procedimineto almacenado.

A groso modo, la aplicación gestiona un almacen que se dedica a repartir pan bimbo.

Tengo las siguientes situaciones:
*** Por un lado cuando un cliente hace un pedido de un producto del cual el almacen no dispone de existencias en el almacen, el pedido se registra sin fecha de entrega. Entonces en el momento en que llega al almacen un nuevo lote de prodcutos, se repasan todos los pedidos pendientes mirando a ver si hay algun pedido sin asignar fecha y que sea del producto que ha llegado. En ese caso automáticamente se le asignan las unidades que el cliente ha pedio y el pedido queda listo para entregar.(Espero que me hayais comprendido)

*** Otra situación es que cada vez que el administrador arranca la aplicación se hace un repaso de todos los productos que hay en el almacen, y los que estén caducados se dan de baja en la base de datos.

EN el primer caso, para comprobar los pedisdos se recorre una tabla(pedidos) y si hay alguno para complentar se modifican dos tablas, la de pedidos yla de almacen(ya que las unidades que se le han asignado al pedido dejan de estar disponibles)

En el segundo caso solo trabajo con la tabla almacen.

La duda es , son buenos ejemplos para usar un trigger o un procedimiento almacenado???
Si es así, me podeis decir alguna página donde te expliquen bien ha hacerlo con ejemplos???
Muchas gracias!!
  #2 (permalink)  
Antiguo 05/01/2008, 07:30
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Aconsejable utilizar un trigger

Personalmente, los triggers son para mantener automaticamente reglas de negocio a nivel de integridad de datos que no se pueden implementar con los mecanismos simples de SQL, pero no son adecuados para procesos pesados de logica negocio como los dos que comentas. En mi opinion eso forma parte del trabajo de la capa de logica de negocio.

Además, en el primer caso sí sería sencillo lanzar un trigger ya que la entrada de un pedido es un evento susceptible de lanzar un trigger. En cambio, arrancar la aplicación no es algo que lance un trigger en la BDD así que por ese lado tampoco es un buen ejemplo. Este caso parece más adecuado algo a nivel de "eventos de aplicación". Es decir, que sea la aplicación la responsable de lanzar la tarea ya que es la que determina el evento (arrancarse).

En cuanto a usar procedimientos almacenados... esa es una elección diferente. Usarlos es más adecuado cuando se sabe seguro que no se va a cambiar de fabricante de BDD y, por ejemplo, cuando se necesita que la lógica este "pegada" a la BDD, utilizando los procedimientos almacenados como una capa de abstracción sobre las tablas de forma que cualquier programa que ataque a los datos lo haga sobre los procedimientos y no directamente sobre las tablas. Tambien son adecuados para hacer tareas pesadas que requerirían muchos viajes por la red si se realizaran en otra capa "lejos" de la BDD.

Si sabes seguro que no vas a cambiar de BDD, en este caso se podrían utilizar procedimientos almacenados, sobretodo en el segundo caso ya que, asi como lo has descrito, el proceso es totalmente interno y autónomo.

De todas formas hay que tener cuidado si combinas triggers y/o procedimientos almacenados con otras formas de atacar la BDD, especialmente ORMs, ya que pueden interferirse entre sí.

S!
  #3 (permalink)  
Antiguo 05/01/2008, 15:42
 
Fecha de Ingreso: mayo-2005
Mensajes: 294
Antigüedad: 18 años, 11 meses
Puntos: 0
De acuerdo Re: Aconsejable utilizar un trigger

Oye pues que muchísimas gracias!
Me has servido de muchísima ayuda.
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 09:54.