los tan conocidos sp o store procedure! pues si ya existen hace mucho!! bueno en realidad desde la version 5.0 y muchas otras cosas mas. aqui los detalles

Una introducción a las nuevas características

Con la versión 5 de su motor de base de datos, MySQL da un salto comparable (o mayor) a la incorporación de almacenamiento ACID con InnoDB. Básicamente, esta última versión incorpora 4 novedades: Stored procedures, Triggers, Views y Data Dictionary (o Information Schema). De las otras 2 nuevas características (Cursores y matemática de precisión) me ocuparé más adelante.

Aunque cada una merece un espacio propio (y lo va a tener), acá va una pequeña introducción general, que no sólo se aplica a MySQL sino también a otros motores.

Empecemos con los Stored Procedures (o SPs). Un SP es un procedimiento (una rutina escrita en un lenguaje en particular) almacenado en una base de datos. Tiene un nombre, una lista de parámetros (que puede ser vacía) y un cuerpo (las sentencias que se ejecutarán al invocarlo) Se suele distinguir entre una función, que devuelve un valor como resultado de su ejecución y un procedimiento, que puede no devolver ningún valor, o puede devolver varios a través de sus parámetros. Además, una función tiene varias limitaciones que un SP no tiene. MySQL permite crear ambos tipos de rutina.

Un Trigger es una rutina también almacenada en la base de datos, asociada a una sentencia SQL de modificación de datos (INSERT, UPDATE o DELETE) Por ejemplo, se puede crear un trigger asociado a la sentencia DELETE en una tabla de clientes, para impedir que se elimine uno que tenga un saldo distinto de cero. El cuerpo del trigger puede ejecutarse una única vez como resultado de la ejecución de la sentencia, o una vez por cada registro afectado. Esto quiere decir que, en el caso de los clientes, el trigger debería ejecutarse por cada cliente que cumple la condición del WHERE.

Una View (Vista) es básicamente un SELECT almacenado. El motor distingue dos tipos de tablas, "base" y "derivadas" Una tabla base es una existente en el motor de almacenamiento. Una derivada es la que surge de cualquier combinación de tablas base, literales y/o funciones. Desde este punto de vista, un SELECT produce una tabla derivada. Así, una Vista es un nombre asociado a la tabla derivada que surge de un SELECT. Puesto de esta forma, parece bastante simple pero, de hecho, hay bastante para hablar sobre vistas. Por ejemplo, se pueden crear vistas "actualizables", o sea, vistas que soporten INSERTs y UPDATEs modificando la tabla base.

El Data Dictionary es la forma de acceder a los metadatos de la base (la información sobre los campos de una tabla es un metadato, por ejemplo) Antes de la versión 5, MySQL permitía acceder a los metadatos a través de SHOW, por ejemplo, "SHOW TABLES". Este mecanismo de acceso tiene como desventaja principal ser una desviación del estándar SQL, que presenta esta información de una forma más natural para el usuario de un motor SQL, esto es, a través de tablas. La nueva implementación pone el diccionario en la base de datos INFORMATION_SCHEMA (aunque las sentencias SHOW siguen siendo soportadas) Esta base es creada por el motor cada vez que arranca, y es mantenida a medida que ocurren cambios en las estructuras de la base. No se puede modificar su contenido directamente. Entre otras tablas, se puede encontrar "TABLES" que (obviamente) lista las tablas y vistas que existen en el motor.

Espero haber generado una chispa de curiosidad. Si ya utilizaron MySQL, es muy probable que en algún momento hayan lamentado que no tuviera alguna de las herramientas que ahora está presentando. En particular, me hubiera gustado mover ciertos checkeos que tuve que dejar en la aplicación a triggers, como forma de proteger la base "desde adentro"

visiten estas paginas de donde obtendran mas informacion en detalle sobre esto

http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html
http://www.mysql-hispano.org/page.php?id=36
http://mysql5.linux10.com.ar/
sobre procedimientos almacenados
http://dev.mysql.com/doc/refman/5.0/en/stored-procedures.html

0 comentarios: