His de bd

Solo disponible en BuenasTareas
  • Páginas : 3 (704 palabras )
  • Descarga(s) : 0
  • Publicado : 30 de mayo de 2011
Leer documento completo
Vista previa del texto
Disparadores en SQL

En ocasiones es necesario mantener restricciones en la base de datos que no pueden expresarse directamente con las sentencias de creación de tablas como CREATE TABLE. Porejemplo, en una aplicación bancaria, si un cliente se queda sin saldo para un pago en una cuenta (es decir, entra en “números rojos”), se deberá crear automáticamente un crédito personal para eldescubierto. Si en la base de datos teníamos una tabla CUENTAS con la información de las cuentas bancarias (incluyendo un atributo saldo), entonces deberíamos “observar” la tabla, y cuando se ejecutase unasentencia UPDATE sobre la misma, habría que comprobar si se cumple la condición saldo<0, en cuyo caso, habría que crear una tupla en la tabla PRESTAMOS. Esta idea de observar cambios es la que seimplementa en el concepto de disparador (trigger).

Los disparadores (triggers) son funciones definidas por el diseñador de la base de datos que se ejecutan cuando se producen ciertas operaciones en lasbases de datos. Más concretamente, son programas a los que se les da un nombre de objeto en la base de datos, se asocia con una tabla determinada, y se activa cuando ocurre un cierto tipo de evento enesa tabla, como una inserción, actualización o borrado. Si un evento ocurre, el administrador de disparadores dentro del gestor de bases de datos llama a la función adecuada para procesar el evento,por lo que cuando ejecutamos un INSERT, DELETE o UPDATE, es posible que se desencadene la ejecución de disparadores, cosa que hay que tener muy en cuenta al desarrollar y evaluar aplicaciones.
Unprimer ejemplo

Pensemos en una aplicación bancaria en la que los CLIENTES tienen CUENTAS y PRESTAMOS. El siguiente diagrama muestra un esquema simplificado para esta base de datos.
Figura 1Figura 1(graphics1.png)

Inicialmente, el banco tiene la política de no permitir que un cliente quede en números rojos. Podríamos pensar en crear un disparador para esa tarea.
Un primer ejemplo, mejor...
tracking img