Víctor Javier Madrid

Consultor tecnológico de desarrollo de proyectos informáticos.

Ingeniero en Informática con especialidad en Ingeniería del Conocimiento *.

Ver todos los tutoriales del autor

Fecha de publicación del tutorial: 2009-10-14

Tutorial visitado 15.664 veces Descargar en PDF
Echo MySQL

Echo MySQL.


0. Índice de contenidos.

1. Introducción

Cualquiera que haya trabajado con la base de datos MySQL de forma un poco más "avanzada" que realizar una simple SELECT,se habrá dado cuenta de la inexistencia de una función del tipo ECHO. Es decir, NO EXISTE la función que nos permite la impresión de un texto en pantalla, por lo que acciones como comprobar el correcto funcionamiento de un trigger, una función o un procedimiento almacenado se vuelven verdaderas odiseas cuando estos no son lo suficientemente simples ;-).

Tras la realización de una función muy compleja, me dí cuenta de lo necesaria que se hacía la utilización de una función tipo ECHO para asegurar al 100% que la función compleja "hacía lo que tenía que hacer", esta función tenía en un primer momento un error en su lógica el cual no veía..jeje. Tras dedicar alguna hora y con mucha ayuda de la desesperación en estas cosas (que sólo los informáticos entendemos ;-) ) surgio la "idea feliz" :

¿Por qué no usar una tabla temporal de logs como pantalla en la que guardar las trazas?


2. Entorno.

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil Asus G50Vseries (Core Duo P8600 2.4GHz, 4GB RAM, 320 GB HD).
  • Sistema operativo: Windows Vista Ultimate.
  • MySQL 5.1.32
  • MySQL Workbench OSS for Windows version 5.1.18 (Para el diseño del modelo de datos)

3. Requerimientos.

Para la realización de este tutorial se ha utilizado la herramienta de generación de diagramas de entidad-relación MySQL Workbench.Con ella se ha generado un modelo de datos formado por 3 tablas :

  1. Clientes : Tabla que almacenará la información de los usuarios del sistema creado
  2. Cuentas : Tabla que alamacenará la información asociada a la cuenta de los usuarios
  3. Perfiles : Tabla que almacenarará los perfiles de las cuentas

Requisito 1 : Un cliente puede tener más de una cuenta.

Requisito 2 : Un perfil puede estar asociado a más de una cuenta.

Diagrama de Entidad Relación

Representa las tablas anteriores y la información a almacenar.

Diagrama Entidad Relación

Script de creación del modelo de datos

Nota: Es necesario tener creado el esquema en el que se guardaran.

Script para la carga de datos

Script de carga de datos de la tabla Clientes :

Script de carga de datos de la tabla Perfiles :


4. Configuración.

En este punto realizaremos la definición de la tabla que almacenará las trazas : la tabla echo_log.

Nota: Se ha definido una tabla de logs lo más genérica y funcional posible,de ahí que se hayan añadido más columnas de las necesarias como "categoria" y "detalle_categoria" (de esta forma podremos filtrar las búsquedas en esta tabla), pero estoy seguro que muchos de vosotros tendreis más propuestas para incluir en esta tabla y así dotarla de mayor funcionalidad.

Tabla de logs para simular ECHOs

Detalle de las columnas :

  1. id_log : Identificador del log.
  2. categoria : Categoriza el tipo de log al que se refiere.
  3. detalle_categoria : Detalle del tipo de log,
  4. descripcion : Mensaje del log
  5. fecha : Fecha en la que se produjo

5. Funcionamiento.

Para la realización del ejemplo y ver como se gerneran los logs se va proceder a crear :

  1. Un Trigger que se ejecute ANTES de realizar un inserción en la tabla Cuentas.
  2. Un Trigger que se ejecute DESPUES de realizar un inserción en la tabla Cuentas.
  3. Un Procedimiento Almacenado utilizado para insertar un Administrador en la tabla Cuentas.
  4. Una Función utilizada para insertar un Administrador en la tabla Cuentas.

Nota : Para cada ejemplo se borra previamente el contenido de la tabla Cuentas y de la tabla echo_log


Ejemplo 1 : Insertar un administrador desde la sentencia de INSERT

Código del trigger que se ejecuta ANTES de realizar un inserción en la tabla Cuentas :

Nota : Inserta únicamente una traza en la tabla de logs.

Código del trigger que se ejecuta DESPUES de realizar un inserción en la tabla Cuentas :

Nota : Inserta únicamente una traza en la tabla de logs.

Sentencia de INSERT que introduce un administrador

Consulta que muestra las trazas de realizar un insert :

Resultado de la consulta :

Ejemplo1

Ejemplo 2 : Insertar un administrador desde el procedimiento almacenado 'insertarAdministradorProcedure'

Código del procedimiento almacenado para realizar una inserción en la tabla Cuentas :

Nota : Inserta únicamente una traza en la tabla de logs y ejecuta el insert. (Requiere tener el ejemplo 1 para ver las trazas de los triggers)

Sentencia de llama al procedimiento que introduce un administrador

Consulta que muestra las trazas de realizar una llamada al procedure

Resultado de la consulta :

Ejemplo2

Ejemplo 3 : Insertar un administrador desde la función 'insertarAdministradorFunction'

Código de la función para realizar una inserción en la tabla Cuentas :

Nota : Inserta únicamente una traza en la tabla de logs y ejecuta el insert. (Requiere tener el ejemplo 1 para ver las trazas de los triggers)

Sentencia de llamada a la función que introduce un Administrador

Consulta que muestra las trazas de realizar la llamada a la funcion :

Resultado de la consulta :

Ejemplo3

Ejemplo 4 : Todo mezclado

En este ejemplo vamos una funcionalidad muy interesante de realizar la tabla echo_log de esta manera

Nota : Requiere vaciar las tablas y tener la funcionalidad de los anteriores ejemplos

Llamadas a los tres métodos

Consulta que muestra las trazas de realizar la llamada a la función :

Ahora que tenemos todas las trazas podremos ser capaces de filtrar por cualquiera de las columnas para asi obtener la información que más nos interese, por ejemplo la de todos los TRIGGER, la de una función en particular, con un tipo de descripción,etc.

Resultado de la consulta :

Ejemplo4

6. Conclusiones.

Espero haberos ayudado con esta "idea feliz",que os ayudara mucho a la hora de encontrar errores y sobre todo a la hora de construir diferentes elementos de la base de datos como son : Triggers, Procedures y Functions. Para cualquier duda ya sabeis.

Un saludo.

Víctor

mailto:vjmadrid@autentia.com

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

Share |
Anímate y coméntanos lo que pienses sobre este TUTORIAL: