sábado, 5 de abril de 2008

Diferencia entre un trigger o disparador y un procedure o procedimiento

Las diferencias entre estos dos objetos las podemos ver si definimos que hacen cada uno.

PROCEDIMIENTO

El procedimiento se puede ejecutar:

  1. de manera directa desde el SQL
  2. desde una aplicacion
  3. desde otro procedimiento

Los procedimientos sirven:

  1. Simplificar desarrollo de aplicaciones
  2. Mejorara el rendimiento de las BBDD(esta precompilado)
  3. Encapsular las operaciones que efectuan las BBDD(el programador no debe de recordar todas las instrucciones sino que un prodecimiento con unos valores da un servicio )

El procedimiento puede devolver valores, se pueden capturar errores, puede crear variables, bucles, etc....

DISPARADOR

Un disparador es una accion que se ejecuta en un momento dado.

Por ejemplo, cada vez que se cree un usuario, revisar que no este creado ya en la tabla usuarios y usuarios-eliminados.Si usuarios tiene una clave primaria, seguramente al dar de alta, nos avisara al ahber repeticiones, pero no a causa de una revision como la que queremos, sino por un duplicado.

Pongamos otro ejemplo, cda vez que el stock sea menor que 50, comprar 100 unidades.Si cada vez que hacemos una accion en la que modificamos el stock, tenemos que crear un trozo ed codigo que haga una revision, estara este codigo esturreado por el codigo.Tampoco es efectivo un programa que vaya revisando constantemente el stock que hay y lo incremente si es necesario, ya que este programa puede molestarnos a causa del tiempo que necesita.

Para esto esta el disparador. Cada vez que se modifique el stock, tiene una accion anterior y posterior en la cual permite o no, resta stock o lo añade segun convenga. Pero hay que tener en cuenta de que este disparador esta escrito una sola vez ne la tabla de stock.

Cuando se crean los diaparadores:

Implementacion d e una regla de negocio(como las anteriores).

Mantenimiento de una auditoria(cada vez que cambia algo, se registra en otra tabla)

Mantenimiento de columnas derivadas(una columna a veces depende de otras 2)

Comprobaciones de restricciones de integridad del estilo "no se puede bajar un sueldo", que aunque la tabla sueldos, si admite un sueldo inferior, no se puede restar a un empleado, oea, que una regla no puede hacer que el siguiente valor nos de un valor inferior que el anterior.

Reparacion de restricciones de integridad.Se trata de devolver el valor del sueldo modificado erroneamente

Definicion de trigger y procedure

En este documento voy a intentar definir un trigger y un procedure, oe d otra manera, un disparador o un procedimiento

Asi a bote pronto puedo decir lo siguiente:

Procedimiento:Conjunto de acciones definidas por un usuario que proporcionan un servicio. Una vez creados, se incorporan a la base de datos como un objeto mas.Generalmente se usan para automatizar areas. Pueden ser llamados directamente, desde un programa ajeno, o desde otro procedimiento.

Disparador:Son acciones que se ejecutan para el propio mantenimiento de la base de datos o para definir reglas de negocio.
Por ejemplo, para, en la tabla de stock, cada vez que compremos mas material, queremos que se nos guarde en otra tabla la cantidad antes de comprar y la posterior una vez actualizada.
Otro ejemplo, cada vez que un alumno se matricule de una asignatura, comprobar que no ha excedido el numero de convocatorias permitidas.