Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/01/2008, 07:30
GreenEyed
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 7 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!