Procedimientos Almacenados y Disparadores en la base de datos
¿Qué son?
Los procedimientos almacenados y los disparadores o triggers son pequeños programas desarrollados en código SQL. En este tutorial añadiremos funciones y trigger o disparadores con ejemplos prácticos.
Unas herramientas que brinda el motor de base de datos MySQL son los procedimientos almacenados, funciones y trigger, que se utilizan para realizar transacciones u operaciones como insertar o modificar registros.
Los procedimientos almacenados son pequeños programas desarrollados en código SQL. Un procedimiento almacenado es un conjunto de comandos SQL que se almacenan junto con la base de datos.
La ventaja de un procedimiento almacenado es que podemos crearlo en cualquier editor de texto e incluso en el servidor, es ejecutado por el motor de bases de datos y no es accesible a los usuarios sino solo al administrador.
Un procedimiento almacenado envía sus resultados a una aplicación para que esta los muestre en pantalla evitando sobrecargar el servidor, en el tutorial:
Creación, Consultas e inserciones de datos
Un procedimiento almacenado (Store Procedure), es un pequeño algoritmo en lenguaje SQL que se almacena junto a la base de datos y permite realizar tareas sobre estos datos.
Las Ventajas de los procedimientos almacenados son:
- Se pueden acceder desde distintos programas externos, si la necesidad de hacer publica la estructura de la base de datos.
- Se pueden reutilizar por lo tanto ganaremos tiempo al estar ya programado y testeado.
Iniciaremos el trabajo de crear y consultar procedimientos almacenados con la herramienta phpmyadmin, pero puede utilizarse cualquiera que soporte consultas SQL a partir de MYSQL 5.0
En este caso tomaremos la base de datos de una agencia de autos o vehículos.
1) Ingresamos a phpmyadmin y de allí a la base de datos
Existen 2 tipo motores que manejan datos en Mysql
- MyISAM: motor por defecto, muy rápido para consultas, no provee integridad de datos, ni protección referencial. Ideal sistemas con muchas consultas
- InnoDB: provee protección referencial e integridad de datos además de bloqueo de registros, ideal si se va a insertar, editar o eliminar mucha información constantemente. Generalmente para procedimientos almacenados es mejor utilizar InnoDB.
En la pestaña SQL creamos nuestro primer procedimiento almacenado para consultar los tipos de vehículos. Escribiros en el campo de texto de sql.
CREATE PROCEDURE consultar_tipo_vehiculo() ---> nombre del procedimiento
SELECT * FROM tipo_vehiculo ---> SQL que debe resolver
Para ver los procedimientos creados desde la pestaña SQL consultamos la orden SHOW PROCEDURE STATUS, que no mostrara todos los procedimientos almacenados.
Ahora mostraremos como ejecutar el procedimiento almacenado con el comando CALL nombre_procedimiento (cada lenguaje de programación tiene su propia librería para acceder a un procedimiento almacenado pero son todos similares).
CREATE PROCEDURE pa_vehiculos_por_marca(marca varchar(50))
SELECT * FROM
vehiculos, marcas
WHERE vehiculos.marca = marcas.id
AND marcas.marca=marca
Para ejecutar el ejemplo llamamos al procedimiento almacenado en una pestaña de SQL
CALL pa_vehiculos_por_marca(“Ford”)